JavaScript中常用数组方法以及是否改变原数组的总结

1.push():最后一位新增

    var arr = ["hello",true,45,{},"world"];
    console.log(arr.push("123"));       //6
    console.log(arr);                   // ["hello", true, 45, {…}, "world", "123"]
    arr.push(1);                        
    console.log(arr);				    //["hello", true, 45, {…}, "world", "123", 1]

2.unshift():开头一位新增

	var arr = ["hello",true,45,{},"world"];
    console.log(arr.unshift(123));      //6
    console.log(arr);                   //[123, "hello", true, 45, {…}, "world"]
    arr.unshift(1)
    console.log(arr);                  //[1, 123, "hello", true, 45, {…}, "world"]

3.pop():最后一位删除

	var arr = [1,3,5,7,6];
    console.log(arr.pop());     //6  (删除最后一个数字6)
    console.log(arr);           //[1, 3, 5, 7]
    
    arr.pop();                 //(删除最后一个数字7)
    console.log(arr.pop());    //5  (因为在上一行代码已经删除7,输出的时候又删了一个数字得出5)
    
    console.log(arr);         //[1, 3]

4.shift():最后一位删除

    var arr = [1,3,5,7,6];
    console.log(arr.shift());   //1
    console.log(arr);           //[3, 5, 7, 6]
    arr.shift();
    console.log(arr.shift());  //5

5.reserve():数组元素逆序排序

    var arr = ["hello",true,45,{},"world"];
    arr.reverse();
    console.log(arr);       //["world", {…}, 45, true, "hello"]


    var arr2 = [3,6,1,8,12];
    console.log(arr2.reverse());        //[12, 8, 1, 6, 3]

6.concat():合并数组

	var arr1 = ["hello",true,45,{},"world"];
    var arr2 = [3,6,1,8,12];
    console.log(arr1.concat(arr2));     //["hello", true, 45, {…}, "world", 3, 6, 1, 8, 12]
    console.log(arr1);                  //["hello", true, 45, {…}, "world"]

7.slice(a,b):截取a到b,不包含b

	var arr = [34,"a",67,"b","vc","html","hello"];
    console.log(arr.slice(2,6));        //[67, "b", "vc", "html"]
    console.log(arr);                   //[34, "a", 67, "b", "vc", "html", "hello"]

8.splice(a,b,c):截取a,截取b个,替换为c

	var arr = [34,"a",67,"b","vc","html","hello"];
    console.log(arr.splice(2,2,"html"));        //[67, "b"]
    console.log(arr);                           //[34, "a", "html", "vc", "html", "hello"]

    arr.splice(2,2);
    console.log(arr);                          //[34, "a", "html", "hello"]    
    arr.splice(2,0,"html");                    
    console.log(arr);                          //[34, "a", "html", "html", "hello"]
    
    arr.splice(2,2,"html","css","js");        
    console.log(arr);                         //[34, "a", "html", "css", "js", "hello"]

9.sort:排序

	var arr = [5166666,7,369,104,9];
    // sort:默认会按照字符的排序规则,升序
    //     需要传入回调函数,在回调函数身上右接收两个参数,返回这两个参数的差,可以按照数值的排序规则进行排序
    arr.sort(function(a,b){
        return b-a;         //降序
    });
    console.log(arr);       //[5166666, 369, 104, 9, 7]
    arr.sort();
    console.log(arr);       //[104, 369, 5166666, 7, 9]     (按照字符的排序规则升序)

10.indexOf(a,b);

检测数组中是否存在指定数据a,从索引b开始检测,存在返回索引,不存在返回-1

	var arr = ["a","45",67,true,"hello",67,45,25,13,89];
    console.log(arr.indexOf(67));         //2
    console.log(arr);                    //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]    原数组
    console.log(arr.indexOf("world"));  //-1
    // console.log(arr.indexOf("a"));
    console.log(arr.indexOf(67,3));     //5  从索引3开始检测是否有67
    console.log(arr.indexOf(67,6));    //-1

11.forEach(callback)

数组的专属遍历方法,在回调函数身上又有三个参数,该项的值,该项的索引,数组本身

	var arr = ["a","45",67,true,"hello",67,45,25,13,89];
    var f = arr.forEach(function(val,idx,self){
        console.log(val);       //a  "45"  67.......
        console.log(idx);      //0 1 2 3 4 ......
        
    })
    console.log(f)      //undefined        无返回值
    console.log(arr);   //原数组

    //var arr = ["a","45",67,true,"hello",67,45,25,13,89];
   // var f = arr.forEach(function(val,idx,self){
   //    return val + "a"
   // })
   // console.log(f)      //数组的每一个都加上a      

12.map

不是专门用来遍历,但是可以实现遍历,格式同forEach
主要功能:用来获取数组中的数据,并返回成新的数组

	var m = arr.map(function(val,idx,self){
        // console.log(val,idx,self)
        return val + "a";
    })
    console.log(arr);   // ["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]
    console.log(m);     // ["aa", "45a", "67a", "truea", "helloa", "67a", "45a", "25a", "13a", "89a"]

13.filter

不是专门用来遍历,但是可以实现遍历,格式同forEach
主要功能:过滤,回调函数每次返回值为true,会将这个遍历到的值放到新数组中,在filter结束后,返回这个数组,如果为false则跳过

	var f = arr.filter(function(val,idx,self){
        return typeof val === "string";
    })
    console.log(f);     // ["a", "45", "hello"]

14.some

检测数组中是够满足指定条件,如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行,如果没有满足条件的元素,则返回false(不会对空数组就行检测)

	var f = arr.some(function(val){
        if(val == 67){
            return val;
        }
    })
    console.log(f);     //true


    var f = arr.some(function(val){
        if(val == "cvb"){
            return val;
        }
    })
    console.log(f);     //false
    console.log(arr);   //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]

15.every

判断数组中是否每个元素都满足条件条件,全部满足返回true,有一个不满足返回false

	var f = arr.every(function(val){
        if(val == 67){
            return val;
        }
    })
    console.log(f);;        //false
    console.log(arr);       //["a", "45", 67, true, "hello", 67, 45, 25, 13, 89]

16.reduce

reduce(callbackfn,[initslValue]),入参方式从右往左
reduce()方法接受callback函数,这个函数包含四个参数
preValue:上一次调用返回的值,或者是提供的初始值
curValue:数组中当前被处理的数组项
index,当前数组项的数组中的索引值
array:调用array()方法的数组

//1、求数组各项和
    var arr = [1,2,3,0,4,5];
    var sum = arr.reduce(function(pre,cur){
        return pre + cur;
    })
    console.log(sum);       //16

//2、取最大值
    var max = arr.reduce(function(pre,cur){
        return Math.max(pre,cur);
    })
    console.log(max);       //5

//3.数组去重
    var norepeat = arr.reduce(function(pre,cur){
        pre.indexOf(cur) === -1 && pre.push(cur);
        return pre;
    },[])
    console.log(norepeat);      //[1,2,3,0,4,5,1]

//还可以求阶层(pre*cur),就幂次方(pre**cur)

//4.将二维数组转换成一维数组
    var arr1 = [[1,2],[3,4]];
    var str = arr1 .reduce(function(prev,cur){
        return prev.concat(cur);
    })
    console.log(str);       //[1,2,3,4]

17.reduceRight

reduceRight(callbackfn,[initslValue]),和reduce()方法基本一样,但是入参方式从左往右

//1、求和 
   var arr = [1,2,3,0,4,5,1];
    var sum = arr.reduceRight(function(pre,cur){
        return pre + cur;
    })
    console.log(sum);       //16

//2、求最大值
    var max = arr.reduceRight(function(pre,cur){
        return Math.max(pre,cur);
    })
    console.log(max);       //5

//3、数组去重,倒序
    var norepeat = arr.reduceRight(function(pre,cur){
        pre.indexOf(cur) === -1 && pre.push(cur);
        return pre;
    },[])
    console.log(norepeat);      //[1, 5, 4, 0, 3, 2]

//还可以求阶层(pre*cur),就幂次方(pre**cur)

//4.将二维数组转换成一维数组
    var arr1 = [[1,2],[3,4],[7,8]];
    var str = arr1 .reduceRight(function(prev,cur){
        return prev.concat(cur);
    })
    console.log(str);       //[7, 8, 3, 4, 1, 2]

18.join

把数组中的所有元素放入一个字符串

//1、join方法的参数不传或者传入undefined会默认用逗号分隔。

    var arr1 = [1,2,3,4];
    var arr2 = [];
    arr2 = arr1.join(undefined);
    console.log(arr2);      //1,2,3,4
    console.log(arr1);      //[1, 2, 3, 4]
//2、
    arr2 = arr1.join("、");
    console.log(arr2);      //1、2、3、4

总结

序号数组方法功能返回值是否改变原数组
1push数组的尾部添加一个元素返回添加元素后数组长度
2unshift数组首部添加一个元素返回添加元素后数组长度
3pop删除数组尾部一个元素返回删除的元素
4shift删除数组第一个元素返回删除的元素
5reserve数组元素逆序排列,不创建新的数组返回逆序后的数组
6concat创建并返回一个新的数组,注意参数是数组返回原数组和参数数组合并后的新数组
7slice(a,b)排序,默认按照字符的规则做升序返回排序后的数组
8splice(a,b,c)在数组中插入或删除元素的通用方法,能同时删除和插入,删除a到b,替换为c返回删除的元素组成的数组
9sort排序,默认按照字符的规则做升序返回排序后的数组是
10indexof(a,b,c)检测是否含指定数据返回索引值,没有则返回-1
11forEach(callback)forEach(functhion(val,idx,self )遍历数组返回数组的值、数组的索引数组本身(n次)
12map将调用的数组的每个元素传递给指定的函数,并返回一个新数组,这个数组包含该函数的返回值函数返回值组成的新数组
13filter过滤,比较函数返回true或false返回调用数组的一个子集
14some遍历,检测数组中是否有符合条件的数据有ture,无false
15every遍历,检测数组中是否有所有数据都符合条件全部都是ture,一个不是false
16reduce迭代数组的所有项,然后构建一个最终返回值(左向右)函数处理的结果
17reduceRight迭代数组的所有项,然后构建一个最终返回值(右向左)函数处理的结果
18join数组转字符返回字符串
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值