快速初始化数组

41 阅读1分钟

《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文

实现方案

方案一

// 最优方案 
Array(24).fill('a').map((v,i)=>i);  
// [0, 1, 2, ..., 23] 

方案二

// Array本身 
Array(...Array(24)).map((_, h) => h); 
// [0, 1, ..., 23] 

方案三

// 借用apply 
Array.apply(null, Array(24)).map((_, h) => h); 
// [0, 1, ..., 23] 

方案四

// 借用call 
Array.call(null, ...Array(24)).map((_, h) => h); 
// [0, 1... 23] 

一些关于数据的说明

new Array(len) 做的事情等价于下面的代码:

function(len){
  let ary = [];
  ary.length = len;
  return ary;
}

Array.prototype.fill() 指定范围填充:

let array = [1,1,1,1,1,1];
array.fill(0,1,3); // 从下标1到下标3之前将值改变为0
console.log(array) // output => [1, 0, 0, 1, 1, 1]

参考资料