传统法
1.先创建长度为100的数组,然后循环赋值
let arr = new Array(100);
for(let i = 0;i< arr.length;i++){
arr[i] = i;
}
- 先创建一个空数组,依次push进去数值。
let arr = [];
for(let i = 0;i < 100;i++){
arr.push(i);
}
Arry.from()
Array.from()方法从一个类似数组或可迭代对象中创建一个新的数组实例。
- 伪数组对象:
拥有一个length属性和若干索引属性的任意对象。
注意:string、数组也是对象,也符合。 - 可迭代对象
可以获取对象中的元素,如Map 和Set 等。
Array.from({length: 100}) 创建的结果是 [undefined,...,undefined]。
let arr = Object.keys(Array.from({length: 100}));
Array.from(arrayLike, mapFn, thisArg)可以利用map函数。
let arr = Array.from({length:100},(v,i) => i)
apply()
apply()方法调用一个函数,其具有一个指定的值,以及作为一个数组(或类似数组的对象)提供的参数。
let arr = Object.keys(Array.apply(null,{length:100}));
如何理解?
function fn(){
console.log(arguments);
}
fn.apply(null,{length:2});
当通过apply()调用fn时,{length:2}会转换成数组形式的参数[undefined,undefined]。
Array实际上也是一个函数,Array.apply(null,{length:100})
可以看做是Array([undefined,...,undefined])
。
数组实例方法keys()
keys()是ES6中新增的对键名的遍历,返回一个遍历器对象
let arr = Array.from(new Array(100).keys())
解构赋值
...
将一个数组转为用逗号分割的参数序列。
let arr = [...Array(100).keys()]
let arr = [...Array.from({length:100}).keys()]
不管是Array(100)还是Array.from({length:100}),keys()方法都能够获取到遍历器对象。
compare.png
网友评论