ES6数组扩展

2021-12-16  本文已影响0人  苏码码

二、数组扩展

 //Array.of()
    //定义:用于将一组值,转换为数组
    Array.of();    //[]
    Array.of(1);    //[1]
    Array.of(1,2,3);  //[1, 2, 3]
    Array.of(4,5).length;  //2
    
    // copyWithin()
    // 定义:将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组(会修改当前数组)
    // 接受三个参数copyWithin(target, start , end)
    // target(必需):从该位置开始替换数据。如果为负值,表示倒数。
    // start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
    // end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。

    [1, 2, 3, 4, 5].copyWithin(0, 3) ;  //[4, 5, 3, 4, 5] 
    //将从3号位直到数组结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。

    [1, 2, 3, 4, 5].copyWithin(0, 3, 4)  //[4, 2, 3, 4, 5]
    //将从3号位开始4号位结束的成员,复制到从0号位开始的位置,结果覆盖了原来的1。

    [1, 2, 3, 4, 5, 6, 7].copyWithin(0, 3, 5)  //[4, 5, 3, 4, 5, 6, 7]
    //将从3号位开始5号位结束的成员(4和5),复制到从0号位开始的位置,结果覆盖了原来的1和2。

    [1, 2, 3, 4, 5].copyWithin(0, -2, -1)  //[4, 2, 3, 4, 5]
    //-2相当于3号位,-1相当于4号位,代码等同于[1, 2, 3, 4, 5].copyWithin(0, 3, 4)

    //find()
    // find()用于找出第一个符合条件的数组成员。它的参数是一个回调函数,,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
    // find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组
    var arr = [3,4,7,9];
    var a = arr.find(function(item,index,arr){ //用于找出第一个符合条件的数组成员
        return item >5
    });
    console.log(a); 
    
    //另一种写法
    [1, 11, 12, 10].find(n => n > 5)  //11

    //findIndex()
    //findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
    var arr = [3,4,7,9];
    var a = arr.findIndex(function(item,index,arr){ //返回第一个符合条件的数组成员的位置
        return item >5
    });
    console.log(a);   //2

    //fill()
    //定义:用于将一个固定值替换数组的元素
    array.fill(value, start, end)
    // value(必需):填充的值。
    // start(可选):开始填充位置。
    // end(可选):停止填充位置 (默认为 *array*.length)。
    var arr = ["blue", "Orange", "red", "green"];
    arr.fill("abc", 2, 4);  //["blue", "Orange", "abc", "abc"]

    //includes()
    //定义:方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的`includes`方法类似
    [1, 2, 3].includes(2)     // true
    [1, 2, 3].includes(4)     // false
    var arr = ["blue", "Orange", "red", "green"];
    arr.includes('blue');  //true
    // 该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,
    // 如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
    [1, 2, 3].includes(3, 3);  // false
    [1, 2, 3].includes(3, -1); // true

    //flat()
    //定义:用于将嵌套的数组“拉平”,变成一维的数组。
    [1, 2, [3, 4, 6],[7, 8]].flat(); //[1, 2, 3, 4, 6, 7, 8]
    //该方法返回一个新数组,对原数据没有影响。
    var arr = [1, 2, [3, 4, 6],[7, 8]];
    var a = arr.flat();
    console.log(arr); //[1, 2, [3, 4, 6],[7, 8]];
    console.log(a); // [1, 2, 3, 4, 6, 7, 8]

    //默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
    //flat()的参数为2,表示要“拉平”两层的嵌套数组
    [1, 2, [3, [4, 6]],[7, 8]].flat(2);//[1, 2, 3, 4, 6, 7, 8]
    [1, 2, [3, [4, [6]]],[7, 8]].flat(2); //[1, 2, 3, 4, [6], 7, 8]

    //如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
    [1,2,[3,4,[5,[6,[7,[8]]]]]].flat(Infinity); //[1, 2, 3, 4, 5, 6, 7, 8]
上一篇下一篇

猜你喜欢

热点阅读