美文网首页
ES6数组扩展

ES6数组扩展

作者: 苏码码 | 来源:发表于2021-12-16 15:19 被阅读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]
    

    相关文章

      网友评论

          本文标题:ES6数组扩展

          本文链接:https://www.haomeiwen.com/subject/rlhvlltx.html