Array.of方法
es6之前数组有个怪异的行为:
arr = new Array(2) // (2) [empty × 2] 该参数为number成为了长度
arr.length // 2
arr = new Array('2') // ["2"] 非number,参数 成了项
arr.length // 1
// 传入超过1个参数时,为数组的项
arr = new Array('2',2)
array.of可以解决这个问题:
brr = Array.of(2) // [2]
brr.length // 1
brr = Array.of('2') // ["2"]
brr = Array.of('2',2,3) // (3) ["2", 2, 3]
Array.from
定义:接受一个可迭代的对象作为第一个参数,最终返回一个数组。
a = new Set([1,2,3])
Array.isArray(a) // false
b = Array.from(a)
Array.isArray(b) // true
其实array.from还可以提供第二个参数mapFn:
c = new Set([{a:1,b:2}, {a:3, b:4}])
// 第二参数相当于执行map函数
Array.from(c, v => v.a) // (2) [1, 3]
find和findIndex
arr = [11,22,33,44]
(4) [11, 22, 33, 44]
// 返回找到的那一项值
arr.find(v => v>20) // 22
// 找到那一项的index
arr.findIndex(v => v>20) // 1
// 只要找到满足的就会停止再找下去
fill
定义:可以用指定的值填充一至多个值
arr = [11,22,33,44]
arr.fill(100) // (4) [100, 100, 100, 100] 全部替换了
arr.fill(1000, 2) // (4) [100, 100, 1000, 1000] 提供了startIndex, statr包含在内
arr.fill('hello', 1, 2) // (4) [100, "hello", 1000, 1000] 提供了start+end,不包含结束,包含开头
arr.fill('hello', 1) // (4) [100, "hello", "hello", "hello"]
copyWithin
类似于splice方法
arr = [11,22,33,44,55,66,77,88,99]
// 8-9项的内容复制到从0开始的项中去
arr.copyWithin(0, 8,9) // (9) [99, 22, 33, 44, 55, 66, 77, 88, 99]
// 6-9项的内容复制到从0开始的项中去
arr.copyWithin(0, 6,9) // (9) [77, 88, 99, 44, 55, 66, 77, 88, 99]
网友评论