Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 如何使用array.fill创建对象数组?_Javascript_Arrays - Fatal编程技术网

Javascript 如何使用array.fill创建对象数组?

Javascript 如何使用array.fill创建对象数组?,javascript,arrays,Javascript,Arrays,在下面的javascript代码段中,为什么运行此代码段时,冗长和简明中的元素不等效? 我从第二个元素获得了简明的输出 const乏味=[ {}, {}, {}, {}, {}, {}, {}, {}, {}, ]; const简明=新数组(9).fill({}); console.log(冗长); console.log(简明)注意:不确定在运行代码段时发生了什么,但ref业务在现实世界中不会发生 根据Xufox注释:/**ref:2**/表示“对数组元素2的引用”,因为堆栈片段的控制台功能

在下面的javascript代码段中,为什么运行此代码段时,
冗长
简明
中的元素不等效? 我从第二个元素获得了简明的输出

const乏味=[
{},
{},
{},
{},
{},
{},
{},
{},
{},
];
const简明=新数组(9).fill({});
console.log(冗长);

console.log(简明)注意:不确定在运行代码段时发生了什么,但ref业务在现实世界中不会发生


根据Xufox注释:
/**ref:2**/
表示“对数组元素2的引用”,因为堆栈片段的控制台功能无法知道是否有无限嵌套的结构,所以使用ref注释(以及在本例中未使用的id注释)

真实的问题

const concise = new Array(9).fill({});
所有9个条目都将“引用”同一个对象-请参见输出

const简明=新数组(9).fill({});//{} 
简明[0]。a='hello world';

console.log(JSON.stringify(简明))
也许此代码段的解释器不完全支持es6?使用Chrome控制台对我来说效果很好…可能重复“错误”或“不完全支持es6”的意思。当然,代码片段支持ES6。他们怎么可能不呢
/**ref:2**/
表示“对数组元素2的引用”,因为堆栈片段的控制台功能无法知道是否有无限嵌套的结构,所以使用
ref
注释(和
id
注释,在本例中不使用这些注释)。
/**ref:2**/
表示“引用数组的元素2”,因为堆栈片段的控制台功能不知道是否有无限嵌套的结构,所以改为
ref
注释(和
id
注释,在本例中不使用)公平地说,堆栈片段的实际作用与此无关,因为OP可能会遇到他们甚至没有意识到的问题:p“当fill方法传递一个对象时,它将复制引用并用对该对象的引用填充数组。”我想这就是我错过的。谢谢你的回答,非常有见地。
const constance=Array.from({length:9},()=>({random:Math.floor(Math.random()*1000)})console.log(constance);
你能在你的答案中添加这个吗?如果@Gallaxhar