ES6之新增的数组API

8 阅读1分钟

ES6之新增的数组API

// const arr= new Array(10);
const arr = Array.of(10) //[10]
// arr.fill(1);
console.log(arr)
const divs = document.querySelectorAll("div");
const result = Array.from(divs);
console.log(result)

const arr2 = [1, 2, 3, 4, 5];
console.log(arr2.find(item => item > 2))
console.log(arr2.findIndex(item => item > 2))

arr2.copyWithin(2, 1, 3) // [1, 2, 2, 3, 5]
console.log(arr2)
const arr3 = [null, undefined, 1, 2, 3];
console.log(arr3.includes(null))

Array.of() 是为了解决原来使用 new Array() 时含义上的问题。 Array.of() 可以传任何数量,任意类型,只表示创建一个新数组中的元素。而 new Array(10) 则表示特定长度的数组。为了避免歧义,规定创建一定长度的数组时用 new Array() ,否则都用 Array.of() 创建。
Array.from() 是为了解决类数组或者可迭代对象转换为数组的问题。原来需要使用 Array.prototype.slice.call(divs,0) 的方式。可迭代对象就是把一个个元素依次放入到数组中,和 slice() 方法有点类似。 slice() 方法只要有 length 和索引就可以转化。
find() 是找第一个符合条件的元素,filter() 是找所有符合条件的元素。findIndex() 是找第一个符合条件元素的索引。
copyWithin() 是先确定从哪个元素开始,然后是从哪个元素开始复制,复制到哪个元素结束。如果不传,就是复制到最后一个元素。copyWithin()不包含最后一个元素。
includes() 比 indexOf() 要更加方便。indexOf() 需要和 0 进行判断,含义上也有问题。使用 includes() 直接判断,并且采用 Object.js 的方式进行内部判断。