javascript中数组的方法

 数组的方法:专属于数组的函数。

我们从以下几个方面分析,分别是功能、参数、返回值以及是否改变原数据


  1. arr.push()

                功能:在数组最后新增

                参数:要新增的数据

                返回值:增加数据之后的数组长度

                是否改变原数据:是              

    var arr = ["hello",4,5,6,"world"];  //原数组
    console.log(arr);                  //打印原数组
    arr.push("hhh");                   //新增数据
    console.log(arr);                 //打印新增数据后的数组
    var res = arr.push("hhh");        // 返回值
    console.log(res);                 //打印返回值

        2.arr.unshift()

                功能:在数组开始新增

                参数:要新增的数据

                返回值:增加数据之后的数组长度

                是否改变原数据:是              

​
    var arr = ["hello",4,5,6,"world"];    //原数组
    console.log(arr);                     //打印原数组
    arr.unshift("hhh");                   //新增数据
    console.log(arr);                     //打印新增数据后的数组
    var res = arr.unshift("hhh");         // 返回值
    console.log(res);                     //打印返回值

​

        3、arr.pop()

                功能:删除数组最后一个元素

                参数:没有参数

                返回值:删除的数据

                是否改变原数据:是

    var arr = ["hello",4,5,6,"world"];    //原数组
    console.log(arr);                     //打印原数组
    var res = arr.pop();         // 返回值
    console.log(arr);                     //打印新增数据后的数组
    console.log(res);                     //打印返回值

    4、arr.shift()

        功能:删除数组开头数据

        参数:没有参数

        返回值:删除的数据

        是否改变原数据:是

    var arr = ["hello",4,5,6,"world"];    //原数组
    console.log(arr);                     //打印原数组
    var res = arr.shift();             // 返回值
    console.log(arr);                     //打印删除数据后的数组
    console.log(res);                     //打印返回值

         5、arr.splice()

        功能:删除指定数据,并替换

        参数:参数1:开始删除的位置

                参数2:要删除的个数

                参数3~:要插入到删除位置的数据,可以插入多个数据

        返回值:删除了的数据,以数组形式返回

        是否改变原数组:是

     var arr = ["hello",4,5,6,"world"];    //原数组
    console.log(arr);                     //打印原数组
    // var res = arr.splice(0,1,5,333);             // 返回值
    // //从数组的第0位开始删,删除1位,在删除位置插入5和333,可以插入多个数据
    // var res = arr.splice(1);             // 返回值
    //从数组的第1位开始删除,删到最后
    var res = arr.splice(1,2);             // 返回值
    //从数组的第1位开始删除,删除2位
    console.log(arr);                     //打印删除数据后的数组
    console.log(res);                     //打印返回值

        6、arr.slice()

        功能:截取

        参数:参数1:开始截取的位置

                参数2:截取到指定位置的前一个

        返回值:截取出来的新数组

        是否改变原数据:否

                

    var arr = ["hello",4,5,6,"world"];    //原数组
    console.log(arr);                     //打印原数组
    var res = arr.slice(2,5);             // 返回值
    //从数组(数组从0开始)第2位开始截取,截取到5-1=4位
    var res = arr.slice(1);             // 返回值
    //从数组(数组从0开始)第1位开始截取,截取最后
    console.log(arr); //打印截取之后的数组与原数组没有变化,所以不改变原数据
    console.log(res);                     //打印返回值

        7、arr.sort()

        功能:排序,默认字符( Unicode编码)的排序规则

        参数:情况1:无参数,默认字符的排序规则

                   情况2:函数,这个函数又有两个形参,该函数必须返回两个形参的差 ,

                                这时是数值的比较规则

        返回值:排序之后的原数组

        是否改变原数据:是

    var arr1 = [11,5,8,9,21]; 
    console.log(arr1);
    // var res =arr1.sort();
    // var res = arr1.sort(function fn(a,b){
    //     return a-b;   //从小到大
    // })
     var res = arr1.sort(function fn(a,b){
        return b-a;   //从大到小
    })
    console.log(arr1);
    console.log(res);

        8、arr.concat()

        功能:合并数组

        参数:任意数据

        返回值:合并之后的新数组

        是否改变原数据:否

    var arr1 = ["hello","world"];
    var arr2 = [4,5,6];
    // var res = arr1.concat(arr2); 
    var res = arr1.concat(12,"he",{name:"admin"},[10,2],arr2,undefined,null,NaN); 
    //可以合并任意数据
    console.log(res);  // ['hello', 'world', 4, 5, 6]
    // 数字的扁平化,在合并数组时,并不会把arr2作为整体合并,而是,把它里面的数都拿出来合并

        9、arr.join()

        功能:使用分隔符,将数组作为字符串返回

        参数:没有参数时默认逗号隔开或者以传入的字符作为分隔符

        返回值:数组作为字符串返回

        是否改变原数据:否

     var arr = ["hello","world",1,2,3];
    // var res = arr.join(); //hello,world,1,2,3
    var res = arr.join("-");  //hello-world-1-2-3
    console.log(res);

         10、arr.reverse()

        功能:反转数组,颠倒数组中元素的顺序

        参数:无

        返回值:返回反转之后的数组

         是否改变原数据:是

    var arr = [1,5,12,"world"];
    console.log (arr);// [1,5,12,"world"]

    arr.reverse();
    console.log(arr);// ["world", 12, 5, 1]
                    //  改变原数据
    var res = arr.reverse();
    console.log(res);  //返回反转后的数据

         11、arr.toString()

        功能:将数组转换为字符串

        参数:无

        返回值:返回字符串

        是否改变原数据:否

    var arr = [1,5,12,"world"];
    var res = arr.toString();
    console.log(res);

         12、arr.valueOf()

            功能:返回数组的原始值(一般情况下其实是数组本身),

                         一般有js在后台调用,并不显式的出现在代码中

            参数:无

            返回值:返回数组本身

            是否改变原数组:否

    var arr = [1,5,12,"world"];
    var res = arr.valueOf();
    console.log(res);

 ES5新增的数组方法

         1、arr.indexOf()

        功能:根据数据查索引

        参数:参数1:要查询的数据

                参数2:开始查询的位置

        返回值:索引,找到的第一个数的索引,如果找不到就返回-1

        是否改变原数组:否

    var arr = [4,5,3,"world",6,3,3];
    console.log(arr);
    arr.indexOf(4);
    console.log(arr); // [4, 5, 3, "world", 6]
                        //不改变原数组
    // var res = arr.indexOf(4); //0
    // var res = arr.indexOf("world");   //3
    var res = arr.indexOf(3,3);    //5
    //要查询的数据是3 ,从数组第3个位置开始查找,在第5个位置找到
    console.log(res);

        2、arr.forEach()

        功能:遍历数组

        参数:函数,这个函数又有三个形参(value,index,self)

                形参1:数组中的数据

                形参2:索引

                形参3:数组本身

        返回值:无

        是否改变原数组:否

    var arr = [1,5,12,"world"];
    arr.forEach(function(value,index,self){});
    console.log(arr); //[4, 5, 3, "world", 6]         //不改变原数组
    var res = arr.forEach(function(value,index,self){
        // console.log(value);//遍历数组
        // console.log(index);//索引
        //  console.log(self);//数组本身

    });
     console.log(res);  //返回值:undefined那就是没有返回值

         3、arr.map()

        功能:遍历数组,并将修改之后的数组放在一个数组中返回

        参数:函数,回调函数,有三个形参

                形参1:数组中的数据

                形参2:索引

                形参3:数组本身

        返回值:长度等同于老数组的长度的新数组,新数组内的数据是作为回调函数的返回值

        是否改变原数组:否

    var res = arr.map(function(value,index,self){
        return value*1.3;
    });
    console.log(res);//[1.3, 6.5, 13]

         4、arr.filter()

        功能:遍历数组,并过滤数组中的数据

        参数:函数,回调函数,有三个形参

                形参1:数组中的数据

                形参2:索引

                形参3:数组本身

        返回值:返回一个新数组,

                新数组内的数据就是每次回调函数的返回值判断为true时,遍历到的数据

        是否改变原数组:否

    var arr = [4,5,3,"world",6,3,3];
    var res = arr.filter(function(value,index,self){
        return value > 4;
    })
    console.log(res); //[5, 6]

         5、arr.some()

        功能:遍历数组,并查询数组中的所有数据是否匹配条件      

        参数:函数,回调函数,有三个形参

                形参1:数组中的数据

                形参2:索引

                形参3:数组本身

        返回值:布尔值。只要有一个true数组返回值就是true,都是false才是false

        是否改变原数组:否

        var arr = [4,5,3,"world",6,3,3];
        var res = arr.some(function(value,index,self){
            // return value === 4;  //true
            // return typeof value === "object";//false
        });
        console.log(res);

        6、arr.every()

        功能:遍历数组,并查询数组中所有的数据是否匹配条件

       参数:函数,回调函数,有三个形参

                形参1:数组中的数据

                形参2:索引

                形参3:数组本身

        返回值:布尔值,只要有一个是false,数组返回值就是false,都是true才是true

        是否改变原数组:否

    var arr = [4,5,3,6];
    var res = arr.every(function(value,index,self){
        // return value === "w";  //false
        return typeof value ==="number";//true
    });
    console.log(res);

        7、arr.reduce()

        功能:遍历数组,归并

        参数:

                参数1:函数,回调函数,有四个形参(start,value,index,self)

                        形参1:上一次回调函数的初始值,

                                有初始值就是初始值,没有初始值,就是数组的第0个数据

                        形参2:数组中的数据

                        形参3:索引

                        形参4:数组本身

,             参数2:初始值

        返回值:迭代数组的所有项,并构建一个最终值,由reduce返回

        是否改变原数组:否

注:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。

    var arr1 = [4,5,3,6];
    console.log(arr1);
    var res = arr1.reduce(function(start,value,index,sel)
    // {
    //     console.log(start,value);//参数2  4
        
    // },"参数2");//形参1:上一次回调函数的返回值
                //  有初始值,就是初始值
    //没有返回值时,返回undefined
// =========================================

    // {
    //     console.log(start,value);//4 5
    //     //形参1:上一次回调函数的返回值
    //             // 没有初始值,就是数组的第一个数据
    // });

// ======================================

    {
        return start +value;//18 === 4+5+3+6
        // 迭代数组的所有项,并构建一个最终值,由reduce返回

        // 没有初始值,所以从数组的第一个数开始,依次返回形参1:形参1是上一次回调函数的返回值,最后由reduce返回,最后输出arr的返回值res就是数组里的每个元素相加的和
    });
    console.log(res)

         8、lastInsexOf()

        功能:根据指定数据,从右往左,查询在数组中出现的位置,如果没查到返回-1

        参数:参数1:要查询的数据

                参数2:开始查询的位置(不写时,默认从数组最后开始往前查询)

        返回值:返回查询数据的索引。如果没查到返回-1

        是否改变原数组:否

* lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数的。

    var arr = [4,6,3,"world",6];
    console.log(arr);

    arr.lastIndexOf(6);
    console.log(arr);

    // var res = arr.lastIndexOf(6);//4
    //从后往前找,找到最近的获取索引
    // var res = arr.lastIndexOf(6,3);//1
    // var res = arr.lastIndexOf(4,2);//0
    // var res = arr.lastIndexOf("world",2);//-1
    console.log(res);

        9、reduceRight()

        功能:(与reduce类似)从数组的最后一项开始,

                向前逐个遍历到第一位,迭代数组的所有项,然后构建一个最终返回的值。

            参数: 同reduce。

         返回值:同reduce

         是否改变原数据:否    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值