二、数组方法

119 阅读4分钟

1、push()

结尾添加1/多元素。

var rel = arr.push("A", "B");
console.log(arr); // [1, 2, "c", "A", "B"]

2、unshift()

开头添加1/多元素。

var rel = arr.unshift("A", "B");
    console.log(arr); // [ "A", "B",1, 2, "c"]

3、pop()

结尾删除元素。返回删除的元素。

var arr = [1, 2, "c"];
    var rel = arr.pop();
    console.log(arr); // [1, 2]
    console.log(rel); // c

4、shift()

开头删除元素。

var arr = ["a","b", "c"];
    var rel = arr.shift();
    console.log(arr); // ['b', "c"]
    console.log(rel); // a

5、reverse()

反转数组。

 var arr = [1, 2, 3, "a", "b", "c"];
    var rel = arr.reverse();
    console.log(arr); //    ["c", "b", "a", 3, 2, 1]

6、sort()

按unicode顺序排序。

var arr1 = [10, 1, 5, 2, 3];
    arr1.sort();//[1,10,2,3,5]

里面传入回调函数可以进行大小顺序排序:

  • 从小到大:function(a, b) {return: a - b;} 

  • 从大到小:unction(a, b) {return: b - a;} 

7、splice()

        删除、增加、替换指定位置的元素。

        参数:起始下标、数量、元素(可选)

 var arr = ["a", "b", "c", 2, 3, 6];
 var rel = arr.splice(2, 1, "add1", "add2");
    //arr: ["a", "b", "add1", "add2", 2, 3, 6];
    //rel ["c"]

8、concat()

        合并数组

var rel = arr1.concat(arr2, arr3);
console.log(arr1); //原数组
console.log(rel); //新数组

9、join()

        将数组转为字符串,参数为连接符,默认“,”。

var list = ["a", "b", "c", "d"]; // "a-b-c-d"
var result = list.join("-");     //"a-b-c-d"

10、slice()

        裁剪指定位置的数组。

        参数:起始下标,结束下标(负数倒着数)

    var list = ["a", "b", "c", "d"];
        var result = list.slice(1, 3);
        console.log(result);  // ["b", "c"]

11、toString()

        将数组转为字符串,用“,”连接。

var rel = list.toString();

12、valueOf()

        返回数组原始值,一般为数组本身。

    var list = [1, 2, 3, 4];
    var rel = list.valueOf();
    console.log(list); // [1, 2, 3, 4]
    console.log(rel); // [1, 2, 3, 4]

13、indexOf()

        查询某个元素第一次出现的位置。返回下标,没找到返回-1。

    var list = [1, 2, 3, 4];
    var index = list.indexOf(4); //3

14、lastIndexOf()

        从后向前查询元素第一次出现的位置。返回下标,没找到返回-1。

    var list = [1, 2, 3, 4];
    var index = list.indexOf(4); //3

15、forEach()

       遍历数组,每个元素执行里面的回调函数,回调参数有元素、索引、数组。

    var list = [32, 93, 77, 53, 38, 87];
        var res = list.forEach(function (item, index, array) {
          console.log(item, index, array);
        });
    //输出多个,第一个为:32 0 [32, 93, 77, 53, 38, 87]

16、map()

        和forEach一样遍历,但回调函数可以返回出一个值,并将这些返回值生成一个新的数组。

    var list = [32, 93, 77, 53, 38, 87];
        var res = list.map(function (item, index, array) {
          return item + 5 * 2;
        });//新数组:【42,103,87,63,48,97】

  17、filter()

        筛选器,传入一个回调函数,每次循环把满足条件的元素放到新的数组中。

    var list = [32, 93, 77, 53, 38, 87];
        var resList = list.filter(function (item, index, array) {
          return item >= 60;
        });
    //[93,77,87]

18、every()

        传入一个回调函数,设定条件,全部元素遍历判断,全满足true,其余false。

    var list = [32, 93, 77, 53, 38, 87];
        var result = list.every(function (item, index, array) {
          console.log(item, index, array);
          return item >= 50;
        });//false

19、some()

        传入一个回调,设定条件,全部元素遍历判断,没有一个满足返回false,其余返回true。

        var list = [32, 93, 77, 53, 38, 87];
        var result = list.some(function (item, index, array) {
          return item >= 50;
        });//true

20、reduce()

累加器,传入一个回调,回调中每一次循环结束,得到的值,作为pre传入下一次回调执行。

  • 第一次循环执行,由于没有pre,第一个元素作为pre,循环从第二个元素开始,index=1。
    var arr = [2, 3, 4, 5];
        var sum = arr.reduce(function (prev, item, index, array) {
          console.log(prev, item, index, array);
          return prev + item;
        }, 0);//0为第一次pre的初始值,给了0循环就从第一个元素开始。
    //如果没有传入0,就从第二个元素开始,循环三次。
    //sum为14

21、reduceRight()

        和reduce用法一致,不过循环是从右向左。

22、includes()

        用来判断一个数组是否含有一个指定的值,如果是的话返回true,如果不是返回false。

arr1.includes('aaa'); //true

23、Array.from()

将类数组对象,或者可遍历的对象转换成一个真正的数组。

  • 被转换的对象需要有length属性,用于指定数组长度,没有的话会转成空数组。
  • 被转换的对象属性名必须为数值型或者字符串型的数字。
        var all = {
          0: "张飞",
          1: "28",
          2: "男",
          3: ["率土", "鸿图", "三战"],
          length: 4,
        };
        var list = Array.from(all);
        console.log(all);
    //list为数组:[张飞,28,男,array(3)]

24、find()

        传入一个含条件的回调,返回满足的第一个元素,如果没有返回undefined。

    var list = [55, 66, 77, 88, 99, 100];
        var res= list.find(function (item, index, array) {
          return item > 60;
        });//66

25、findIndex()

        和find一样,不过返回的是下标。

26、fill()

        用值去填充数组。

        传入参数:value 必需。填充的值。start 可选。开始填充位置。end 可选。停止填充位置 (默认为 array.length)

    var result = ["a", "b", "c"].fill("填充", 1, 2);
    //["a","填充","c"]

 27、flat()

        用于将嵌套的数组,去嵌套-"拉平"。默认拉平一次,可传参,参数是几拉平几次。

    var list = [1, 2, [3, 4, [5]]];
    var arr1 = list.flat(); // 默认拉平一次;[1, 2, 3, 4, [5]]
     var arr2 = list.flat(2); // 拉平2次;[1, 2, 3, 4, 5]