ES6学习——新加API:Array

73 篇文章 23 订阅

这篇文章我们逐一看看数组中新添加的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下通过测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值