360SDN.COM

首页/ES6/列表

ES6学习——新加API:Array

来源:  2018-04-16 15:45:28    评论:0点击:



这篇文章我们逐一看看数组中新添加的API。

1)Array.of ( ...items )

静态方法,把items转成数组,可以代替Array构造函数。



    var a = Array( 3 );  
    a.length; // 3  
    a[0]; // undefined  
      
    var b = Array.of( 3 );  
    b.length; // 1  
    b[0]; // 3  
      
    var c = Array.of( 1, 2, 3 );  
    c.length; // 3  
    c; // [1,2,3]  


2)Array.from ( items [ , mapfn [ , thisArg ] ] )

把array-like对象,iterator转成数组类型。



    var arrLike = {  
    length: 3,  
    0: "foo",  
    1: "bar"  
    };  
    //var arr = Array.prototype.slice.call( arrLike );  
      
    var arr = Array.from( arrLike );//["foo", "bar", undefined]  



    var arrLike = {  
        length: 4,  
        2: "foo"  
    };  
    var arr = Array.from( arrLike, function mapper(val,idx){  
        if (typeof val == "string") {  
            return val.toUpperCase();  
        }  
        else {  
            return idx;  
        }  
    });  
      
    console.log(arr)// [ 0, 1, "FOO", 3 ]  


3)Array.prototype.copyWithin (target, start [ , end ] )

把数组自身的一部分拷贝到令一部分。



    [1,2,3,4,5].copyWithin( 3, 0 ); // [1,2,3,1,2]  
    [1,2,3,4,5].copyWithin( 3, 0, 1 ); // [1,2,3,1,5]  
    [1,2,3,4,5].copyWithin( 0, -2 ); // [4,5,3,4,5]  
    [1,2,3,4,5].copyWithin( 0, -2, -1 ); // [4,2,3,4,5]  
      
    [1,2,3,4,5].copyWithin( 2, 1 );//[1,2,2,3,4],理解这里的拷贝过程  


4)Array.prototype.fill (value [ , start [ , end ] ] )

用一个值填充数组内容。



    var a = Array( 4 ).fill( undefined );//[undefined,undefined,undefined,undefined]  
    var a = [ null, null, null, null ].fill( 42, 1, 3 );//// [null,42,42,null]  


5)Array.prototype.find ( predicate [ , thisArg ] )

查找数组元素,找到返回那个元素,否则返回undefined。



    var a = [1,2,3,4,5];  
    a.find( function matcher(v){  
        return v == "2";  
    } ); // 2  
      
    a.find( function matcher(v){  
        return v == 7; // undefined  
    });  


6)Array.prototype.findIndex ( predicate [ , thisArg ] )

查找数组元素,返回相应的索引,没有找到返回-1,和indexOf类似,但是能自定义比较函数。



    var points = [  
    { x: 10, y: 20 },  
    { x: 20, y: 30 },  
    { x: 30, y: 40 },  
    { x: 40, y: 50 },  
    { x: 50, y: 60 }  
    ];  
    points.findIndex( function matcher(point) {  
        return point.x % 3 == 0 && point.y % 4 == 0;  
    }); // 2  
      
    points.findIndex( function matcher(point) {  
        return point.x % 6 == 0 && point.y % 7 == 0;  
    } );//-1  


7)entries(), values(), keys()

参考迭代器


*以上全部代码在Chrome 48下通过测试


来源:https://blog.csdn.net/kittyjie/article/details/50629118
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权