创建0-100的数组

2018-03-12  本文已影响286人  回调的幸福时光

传统法

1.先创建长度为100的数组,然后循环赋值

let arr = new Array(100);
for(let i = 0;i< arr.length;i++){
  arr[i] = i;
}
  1. 先创建一个空数组,依次push进去数值。
let arr = [];
for(let i = 0;i < 100;i++){
  arr.push(i);
}

Arry.from()

Array.from()方法从一个类似数组或可迭代对象中创建一个新的数组实例。

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
上一篇 下一篇

猜你喜欢

热点阅读