如何使用Array.map和新的Array构造函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (254)

我试图使用new Array()构造函数map来创建一个创建元素列表的单行代码。代码:

let arr = new Array(12).map( (el, i) => {
  console.log('This is never called');
  return i + 1;
});

阅读文档,这种行为是有道理的。

基本上文档说,即使对于数组中声明的未定义值,map的回调也会被执行,但是例如在创建像之前的代码这样的空数组时,不会执行该回调。

所以这应该工作:

var arr = new Array(12);

for(let i = 0; i < arr.length ; i++){
  arr[i] = undefined;
}

let list = arr.map( (e, i) => {
  console.log(i + 1);
  return i + 1;
});

所以,我们也可以做这样的事情:

let newArray = (length) => {
  let myArray = new Array(length);
  for(let i = 0; i < length; i++) myArray[i] = undefined;
  return myArray;
};

console.log( newArray(12).map( (el, i) => i + 1 ) );
提问于
用户回答回答于

你可以使用Array#from创建一个已经传递了长度的数组:

Array.from({length: 12}, (e, i) => i + 1);
用户回答回答于

可以在ES5中使用:

let arr = Array.apply(null, Array(12))
    .map(function (x, i) {
        return i
    });

// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

所属标签

可能回答问题的人

  • EatRice

    17 粉丝0 提问143 回答
  • 成都加米谷大数据

    11 粉丝0 提问11 回答
  • 人生的旅途

    11 粉丝485 提问1.7K 回答
  • 学生

    8 粉丝476 提问523 回答

扫码关注云+社区

领取腾讯云代金券