将Array.map与新的Array构造函数一起使用 [英] Using Array.map with new Array constructor
问题描述
我试图使用 new Array()
构造函数与 map
来创建一行代码这会创建一个元素列表。这样的事情:
I was trying to use new Array()
constructor with map
in order to create a one-line code that creates a list of elements. Something like this :
let arr = new Array(12).map( (el, i) => {
console.log('This is never called');
return i + 1;
});
阅读 docs ,这种行为是有道理的。
Reading docs, the behaviour makes sense.
基本上,docs表示即使对于数组中声明的未定义值,也会执行map的回调,但不会在创建空数组时执行之前的代码。
Basically docs say that callback of map will be executed even for declared undefined values in array, but not for example when creating empty Arrays like the code before.
所以这应该有效:
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;
});
所以,我们也可以这样做:
So, We also can do something like this :
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 from
创建一个已通过长度的数组。
You can use Array#from
to create an array having passed length.
Array.from({length: 12}, (e, i) => i + 1);
这篇关于将Array.map与新的Array构造函数一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!