创建0-100的数组

传统法

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()方法从一个类似数组或可迭代对象中创建一个新的数组实例。

  • 伪数组对象:
    拥有一个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

推荐阅读更多精彩内容

  • 早上好!#幸福实修#~每天进步1%#幸福实修10班@吕敏一富阳 20170810(11/30) 【幸福三朵玫瑰】 ...
    嘟嘟妈妈2727阅读 33评论 1 1
  • 满是繁华寂雨夜,烟花落寞影如戏。青屋弄堂看尽情仇爱恨,夕阳晚月演绎你绝笔。 璀璨、短暂如烟花般生命中,期盼寻找可以...
    lllv521阅读 259评论 4 5
  • 古 帝都 扬沙土 染血轮墓 看残旗战鼓 忆铁马山河苦 ...
    读骨丶阅读 19评论 0 0
  • 从小到大,我生病的次数绝不是双手双脚能数的过来的,特别是着凉发烧,现在成年了还至少一年一次呢。小时候就更不用说了,...
    玖歌不是哥阅读 91评论 7 3
  • 每个初生的孩子如同一张白纸,而我们就像调色板,我们填充了什么颜色,孩子就是什么样子。 我家二宝属于牛脾气类型,年龄...
    木有青枝阅读 307评论 3 10