《深入理解ES6》阅读笔记 --- 改进的数组功能

《深入理解ES6》阅读笔记 --- 改进的数组功能

ECMA5为数组添加了很多有用的方法,比如forEach,map等,而ECMA 6也为数组添加些许有用的方法。

of

用于正确的创建一个数组,而不是像new Array('2') 或 new Array(2) 一样创建一个行为诡异的数组:

let arr = Array.of(2,'2')

from

可以从一个类似数组或可迭代的对象中创建一个新的数组实例:

function a(){
 let arr = Array.from(arguments)
}

另外它可以传入一个函数来遍历操作,再返回。

copyWithin

方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小:

let arr = [1,2,3,4]

arr.copyWithin(2,3) //[1, 2, 4, 4]

find

返回数组中满足提供的测试函数的第一个元素的值:

let arr = [1,2,3,4]
arr.find(v => v < 3) //1

findIndex

返回数组中满足提供的测试函数的第一个元素的索引,否则返回-1:

let arr = [1,2,3,4]
arr.findIndex(v => v < 3) // 0

新添加的方法不多,有兴趣的话可以通过MDN来查一查,了解了解。

但是,这一次,数组来一次跟数学计算有关的更新,中文翻译为定型数组,也就是ArrayBuffer以及相应的数值数据类型,这种数组专门用来处理数值类型,我目前能想到的场景,一种是canvas搞复杂动画,比如墨刀这样类型的产品,或者同时从内存中读取数据时。其余,我能想到的几乎很少,虽然这样,如果你有兴趣,可以仔细的研究一下。

let buffer = new ArrayBuffer(10)

console.log(buffer.byteLength)

你可以通过DataView来操作缓冲区:

let buffer = new ArrayBuffer(10)
let view = new DataView(buffer)

view.setInt8(0,5)
view.getInt8(0) // 5

具体的这些方法,你都可以通过MDN来查询。

对于定型数组来说与普通数组还是有一定差异的,虽然大部分方法相同。我们不能通过Array.isArray来检查定型数组,而且定型数组的是不可变的,数组反而可以通过push来自动增加length,定型数组只能依赖于初始化时分配的空间。当然定型数组也缺失了一些数组中的方法,比如:push,pop等可以改变空间的方法。

编辑于 2018-08-12

文章被以下专栏收录