Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过map函数初始化带有对象的数组_Javascript - Fatal编程技术网

Javascript 通过map函数初始化带有对象的数组

Javascript 通过map函数初始化带有对象的数组,javascript,Javascript,我不知道为什么这个片段不起作用: Array(50).map(e => { e = {id: Math.random() , content: 'some_content'}; return e }); var result=Array.applynull,{length:50}.mape=>{e={id:Math.random,content:'some_content'};返回e}; console.logresult 当然,它会做你让它做的事,而不是你想让它做的事 问题是调用Ar

我不知道为什么这个片段不起作用:

Array(50).map(e => { e = {id: Math.random() , content: 'some_content'}; return e });
var result=Array.applynull,{length:50}.mape=>{e={id:Math.random,content:'some_content'};返回e};
console.logresult 当然,它会做你让它做的事,而不是你想让它做的事

问题是调用Array50的map函数创建了50个空插槽,但没有分配给它们,因此map什么也不做

如所示,您可以使用快速创建一个由50个元素组成的数组,分配给未定义的元素。

您可以使用array.apply并将映射的返回值括在括号中,以返回对象

var-array=array.applynull,{length:50}.map.=>{id:Math.random,content:'some_content'};
console.logarrayUse数组。from{length:50}作为数组。from{length:50}.mape=>{id:Math.random,content:'some_content'};。很好,让它成为一个答案,这样我就可以接受iTunes初始化的数组条目被map、foreach等跳过。您可以使用扩展语法创建一个由n个元素组成的iterable[…Array50].mapArray.applynull,{length:50}长度大于500000英寸时不起作用firefox@MattEllen-未分配元素和分配给未定义元素之间存在差异。据我所知,直接测试这种差异的唯一方法是使用hasOwnProperty,但这个问题间接地说明了这个问题。这也是Firebug和Firefox控制台之间的问题。Firefox显示[,40多个…],而Firebug显示了50个未定义的数组。我想是时候抛弃Firebug了:DIt也类似于稀疏数组,例如,让x=[1,2];x[7]=3;。图元2…6将被map取消分配和跳过。我们在这里讨论的是50个元素。我看不出性能有问题…是的,我知道。。。取决于是否有人想要50万或500万个随机数:p哦,这并不慢,这是我的错:p