百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

js中数组方法全解

ztj100 2024-11-25 00:38 12 浏览 0 评论

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        console.log("---- concat方法讲解 ----")
            /*
                array.concat(value, ...)
                方法的作用:
                    方法concat()将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。
                    如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。
                方法的参数:
                    要增加到array中的值,可以是任意多个。
                方法的返回值:
                    一个新数组
                底层实现业务逻辑:
                    1、创建一个新的数组,然后把当前数组的值放到新数组里面
                    2、判断arguments长度是否为0,如果为0,返回参数数组
                    3、如果arguments长度不为0,依次判断每个参数的是否为数组;
                        Array.isArray(argArr) 
                    4、如果不是数组,直接向新数组的最后添加即可
                        newArr[newArr.length] = 值;
                    5、如果是数组,那么遍历数组,然后把每次遍历的值都放在数组的末尾
                        for(){
                            newArr[newArr.length] = 遍历的值;
                        }
                    function concat(){
                        var newArr = new Array();
                        // 把this数组的值给放到newArr
                        if(arguments.length != 0){
                            for(var i in arguments){
                                var v = arguments[i];
                                if(Array.isArray(v)){ //表示参数是一个数组
                                    // 遍历v,然后
                                    for(){
                                        newArr[newArr.length] = 遍历的值;
                                    }
                                }else{ //不是一个数组
                                    newArr[newArr.length] = 值;
                                }
                            }
                        }
                        return newArr;
                    }
            */
            // 定义一个数组
        var arr1 = ["小明", "小红", "小黑"]; // JS数组可以存储任意类型
        console.log(arr1.concat());
        // 把参数追加到原数组末尾,不会修改原数组,生成一个新数组
        // var newArr1 = arr1.concat(100, true, "Hello"); // concat并不修改原数组,而是生成了一个新数组。    
        var argArr = new Array(1, 2, 3); //参数数组
        var obj = {
            name: "zhangsan"
        };
        // 其实底层是使用关键字instanceof
        // Array.isArray(argArr)    检测一个对象是否是数组
        console.log("argArr是否是一个数组:" + Array.isArray(argArr)); // true
        console.log("obj是否是一个数组:" + Array.isArray(obj)); // false
        console.log("Hello是否是一个数组:" + Array.isArray("Hello")); // false
        var newArr1 = arr1.concat(obj); // concat如果传递的是一个参数数组,那么会把参数数组里面的每一个元素都追加到原数组的末尾,不会作为整体存储
        console.log("concat操作完毕之后,arr1数值的值:" + arr1);
        console.log("concat操作完毕之后,返回值是一个新数组:" + newArr1);
        console.log(newArr1)
        console.log("---- join方法讲解 ----")
            /*
                array.join( ) 
                array.join(separator)
                方法的作用:
                    方法join()将把每个数组元素转换成一个字符串,然后把这些字符串连接起来,在两个元素之间插入指定的separator字符串。返回生成的字符串。
                    该方法简单来说,就是把数组转换为指定格式的字符串
                方法的参数:
                    在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符。
                方法的返回值:
                    拼接好的字符串
                底层实现业务逻辑:
                    1、创建一个空字符串
                    2、判断arguments的长度,如果长度为0,则遍历this数组,使用,拼接字符串
                    3、如果长度不为0,则取arguments下标0的值进行拼串;
            */
            // toString()  String()     任意类型转换为字符串类型
        var arr2 = [123, 456, 789];
        var arr2Str = arr2.join("#"); //没有传递参数,那么使用逗号作为分隔符
        console.log("join方法执行完毕,返回值类型:" + typeof arr2Str);
        console.log(arr2Str);
        console.log("---- pop方法讲解 ----")
            /*
                array.pop( )
                方法的作用:
                    方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。 
                方法的返回值:
                    array的最后一个元素。
                底层实现业务逻辑:
                    1、先判断当前数组的长度是否为0
                    2、如果为0,则什么都有不处理  return;
                    3、如果数组长度不为0,this.length = this.length - 1;
                    4、在修改数组长度之前,把arr[this.length-1]保存下来,然后反馈
            */
        var arr3 = [];
        var deleteEle = arr3.pop();
        console.log("pop操作完毕之后,arr3:" + arr3);
        console.log("返回值:" + deleteEle);
        /*
            学习方法:
                1、方法的功能
                2、方法的参数
                3、方法的返回值
            
        */
        console.log("---- push方法讲解 ----")
            /*
                array.push(value, ...)
                方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。
                返回值:把指定的值添加到数组后的新长度。
                参数:value, ... 要添加到array尾部的值,可以是一个或多个。
            */
        var arr4 = [11, 22, 33, 44];
        // var arr4Legth = arr4.push("小黑", "小白", 110);
        arr4.push(["小黑", "小明"]);
        console.log("push操作完毕之后,arr4的值:" + arr4)
        console.log(arr4);
        // console.log(arr4Legth);
        console.log("---- reverse方法讲解 ----")
            /*
                array.reverse( )
                描述:Array对象的方法reverse()将颠倒数组中元素的顺序。它在原数组上实现这一操作,即重排指定的array的元素,但并不创建新数组。如果对array有多个引用,那么通过所有引用都可以看到数组元素的新顺序。
            */
        var arr5 = [11, 22, 33, 44, 55];
        var x = arr5.reverse();
        console.log("arr5调用reverse之后:" + arr5);
        console.log(x); // 把反转之后的数组反馈
        console.log("---- shift方法讲解 ----")
            /*
                array.shift( )
                描述:方法shift()将把array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。
                返回值:数组原来的第一个元素。
            */
        var arr6 = [11, 22, 33, 44, 55];
        var deleteEle = arr6.shift();
        console.log("arr6调用shift之后:" + arr6);
        console.log("删除的元素是:" + deleteEle);
        console.log("---- unshift方法讲解 ----")
            /*
                array.unshift(value, ...)   
                描述:方法unshift()将把它的参数插入array的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组新的元素0,如果还有第二个参数,它将成为新的元素1,以此类推。注意,unshift()不创建新数组,而是直接修改原有的数组。
                返回值:数组的新长度
                参数:value, ... 要插入数组头部的一个或多个值。
            */
        var arr7 = [11, 22, 33, 44, 55];
        // var arr7Length = arr7.unshift("xx", "yy");
        var arr7Length = arr7.unshift(["xx", "yy"]);
        console.log("arr7调用unshift之后:" + arr7);
        console.log("arr7调用unshift返回值:" + arr7Length);
        console.log("---- slice方法讲解 ----")
            /*
                array.slice(start, end)
                描述:方法slice()将返回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。
                返回值:一个新数组,包含从start到end(不包括该元素)指定的array元素。
                参数
                    start 数组片段开始处的数组下标。如果是负数,它声明从数组尾部开始算起的位置。 也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
                    end 数组片段结束处的后一个元素的数组下标。如果没有指定这个参数 包含从start开始到数组结束的所有元素。如果这个参数是负数, 从数组尾部开始算起的元素。
            */
        var arr8 = ["xx", "yy", "zz", "kk", "jj"];
        var sliceArr1 = arr8.slice(2); //从下标2开始,截取到数组的末尾,生成一个新数组 ["zz", "kk", "jj"]
        console.log("从下标2开始截取,得到子数组:" + sliceArr1);
        var sliceArr2 = arr8.slice(1, 4); // 从下标1开始,截取到下标4,但是不包含下标4 ["yy", "zz", "kk"]
        console.log("从下标1开始,截取到下标4,得到子数组:" + sliceArr2)
        var sliceArr3 = arr8.slice(-3); // 从倒数第三个,截取到末尾 ["zz", "kk", "jj"]
        console.log("从倒数第三个截取到末尾,得到数组:" + sliceArr3)
        var sliceArr4 = arr8.slice(-4, 3); // ["yy", "zz"]  
        console.log(sliceArr4);
        console.log("---- splice方法讲解 ----")
            /*
                array.splice(start, deleteCount, value, ...)
                方法作用: 可以实现数组元素的添加、删除、替换;
                参数
                start :开始插入和(或)删除的数组元素的下标。
                deleteCount :从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
                value, ... :要插人数组的零个或多个值,从start所指的下标处开始插入。
            */
        // splice实现数组元素的删除
        // pop() 尾部删除   shift() 头部删除
        var arr9 = ["xx", "yy", "zz", "kk", "jj"];
        // arr9.splice(arr9.length - 1, 1); // 使用splice替代pop()
        // arr9.splice(0, 1); // 使用splice替代shift()
        // 如果是做数组头部或尾部元素的删除,那么还是推荐使用pop()和shift()
        // 但是如果要一次性删除多个或任意位置的数组元素,那么就要使用splice()
        // arr9.splice(1, 3);
        // splice实现数组元素的添加
        // push() 尾部添加   unshift() 头部添加
        // arr9.splice(arr9.length, 0, 110); //使用splice替代push() 
        // arr9.splice(0, 0, 110); // 使用splice替代unshift()
        // 如果是做数组头部或尾部元素的添加,那么还是推荐使用push()或unshift()
        // 但是如果要添加到指定位置,那么就使用splice()
        // arr9.splice(2, 0, 110, 119);
        // splice实现数组元素的替换, 删除之后新增
        // arr9.splice(1, 2, 110, 119)
        console.log(arr9)
        console.log("---- sort方法讲解 ----")
            /*
                array.sort( ) 
                Array.sort( ) 对数组元素进行排序 
                array.sort( ) array.sort(orderfunc)
                参数
                orderfunc 用来指定按什么顺序进行排序的函数,可选。
                返回值对数组的引用。注意,数组在原数组上进行排序,不制作副本。
                描述
                方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。
                如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b
                参数
                orderfunc 
                用来指定按什么顺序进行排序的函数,可选。
            */
        var arr10 = [1111, 4, 38, 9];
        // arr10.sort(); //如果没有传递参数,那么把数组元素转换为字符串进行比较;
        arr10.sort(function(a, b) {
            // 如果排序函数的返回值是a - b;那么是升序排列! 如果是b - a,则是降序排列
            // return a - b;
            return b - a;
        });
        console.log("sort没有传递参数进行排序:" + arr10);
        console.log(typeof arr10.toLocaleString());
        /*
            1、JS数组中concat()和push()的区别?
            2、JS数组中pop()、push()、shift()、unshift()的作用
            3、如下代码的执行结果:
                 var arr8 = ["xx", "yy", "zz", "kk", "jj"];
                 var sliceArr4 = arr8.slice(-4, 3); // ["yy", "zz"]  
            4、JS数组中slice()和splice()的区别?     
        */
        // var arr = [11, 22, 33];
        // var str = arr[0] + ""; // "11"
        // for (var i = 1; i < arr.length; i++) {
        //     str += "#" + arr[i];
        // }
        // console.log(str);
        var arrx = [1, 2, 7, 3, 4];
        // function rv(arr) {
        //     var newArr = new Array();
        //     for (var i = 0; i < arr.length; i++) {
        //         newArr[i] = arr[arr.length - 1 - i];
        //     }
        //     return newArr;
        // }
        /*
            0   3
            1   2
        */
        function rv(arr) {
            for (var i = 0; i < arr.length / 2; i++) {
                var temp = arr[i];
                arr[i] = arr[arr.length - 1 - i];
                arr[arr.length - 1 - i] = temp;
            }
            return arr;
        }
        console.log(rv(arrx));
    </script>
</body>
</html>

相关推荐

Vue 技术栈(全家桶)(vue technology)

Vue技术栈(全家桶)尚硅谷前端研究院第1章:Vue核心Vue简介官网英文官网:https://vuejs.org/中文官网:https://cn.vuejs.org/...

vue 基础- nextTick 的使用场景(vue的nexttick这个方法有什么用)

前言《vue基础》系列是再次回炉vue记的笔记,除了官网那部分知识点外,还会加入自己的一些理解。(里面会有部分和官网相同的文案,有经验的同学择感兴趣的阅读)在开发时,是不是遇到过这样的场景,响应...

vue3 组件初始化流程(vue组件初始化顺序)

学习完成响应式系统后,咋们来看看vue3组件的初始化流程既然是看vue组件的初始化流程,咋们先来创建基本的代码,跑跑流程(在app.vue中写入以下内容,来跑流程)...

vue3优雅的设置element-plus的table自动滚动到底部

场景我是需要在table最后添加一行数据,然后把滚动条滚动到最后。查网上的解决方案都是读取html结构,暴力的去获取,虽能解决问题,但是不喜欢这种打补丁的解决方案,我想着官方应该有相关的定义,于是就去...

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactivereactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代optionapi的data的替...

9、echarts 在 vue 中怎么引用?(必会)

首先我们初始化一个vue项目,执行vueinitwebpackechart,接着我们进入初始化的项目下。安装echarts,npminstallecharts-S//或...

无所不能,将 Vue 渲染到嵌入式液晶屏

该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言...

vue-element-admin 增删改查(五)(vue-element-admin怎么用)

此篇幅比较长,涉及到的小知识点也比较多,一定要耐心看完,记住学东西没有耐心可不行!!!一、添加和修改注:添加和编辑用到了同一个组件,也就是此篇文章你能学会如何封装组件及引用组件;第二能学会async和...

最全的 Vue 面试题+详解答案(vue面试题知识点大全)

前言本文整理了...

基于 vue3.0 桌面端朋友圈/登录验证+60s倒计时

今天给大家分享的是Vue3聊天实例中的朋友圈的实现及登录验证和倒计时操作。先上效果图这个是最新开发的vue3.x网页端聊天项目中的朋友圈模块。用到了ElementPlus...

不来看看这些 VUE 的生命周期钩子函数?| 原力计划

作者|huangfuyk责编|王晓曼出品|CSDN博客VUE的生命周期钩子函数:就是指在一个组件从创建到销毁的过程自动执行的函数,包含组件的变化。可以分为:创建、挂载、更新、销毁四个模块...

Vue3.5正式上线,父传子props用法更丝滑简洁

前言Vue3.5在2024-09-03正式上线,目前在Vue官网显最新版本已经是Vue3.5,其中主要包含了几个小改动,我留意到日常最常用的改动就是props了,肯定是用Vue3的人必用的,所以针对性...

Vue 3 生命周期完整指南(vue生命周期及使用)

Vue2和Vue3中的生命周期钩子的工作方式非常相似,我们仍然可以访问相同的钩子,也希望将它们能用于相同的场景。...

救命!这 10 个 Vue3 技巧藏太深了!性能翻倍 + 摸鱼神器全揭秘

前端打工人集合!是不是经常遇到这些崩溃瞬间:Vue3项目越写越卡,组件通信像走迷宫,复杂逻辑写得脑壳疼?别慌!作为在一线摸爬滚打多年的老前端,今天直接甩出10个超实用的Vue3实战技巧,手把...

怎么在 vue 中使用 form 清除校验状态?

在Vue中使用表单验证时,经常需要清除表单的校验状态。下面我将介绍一些方法来清除表单的校验状态。1.使用this.$refs...

取消回复欢迎 发表评论: