增强的数组功能
一、静态方法
这两个方法都是用来创建数组的:
1. Array.from(arg)
将两类对象转为真正的数组:类数组、可迭代对象
- Array.from还可以接收第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
let arr = Array.from({length: 2}, () => 'jack');
// arr = ['jack', 'jack']
// 上面的代码中,Array.from的第一个参数指定了第二个参数运行的次数。
// 这种特性可以让该方法的用法变得非常灵活
- 如果map函数里面用到了this关键字,还可以传入Array.from第三个参数,用来绑定this
Array.from()的另一个应用是,将字符串转为数组,然后返回字符串的长度。因为它能正确处理各种Unicode字符,可以避免JavaScript将大于\uFFFF的Unicode字符算作2个字符的bug。
function countSymbols(string) {
return Array.from(string).length;
}
2. Array.of(...args)
用于将一组值转换为数组。
似乎new Array()就可以实现以上功能,但是当new Array()里面就一个数字时, 他就会代表创建的数组的长度,而不是数组的第一项。这就是与Array.of的区别。
二、实例方法
1. find(callback)
用于查找满足条件的第一个元素
2. findIndex(callback)
用于查找满足条件的第一个元素的下标,没找到返回-1
3. fill(data)
用指定的数据填充满数组所有的内容
['a', 'b', 'c'].fill(7);
// [7, 7, 7]
new Array(3).fill(7);
// [7, 7, 7]
4. copyWithin(target, start, end)
在当前数组内部将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
使用这个方法会修改原数组
5. includes(data) ES7
判断数组中是否包含某个值,使用Object.is匹配