xer*_*gun 1 javascript arrays adjacency-list
我正在创建一个预填充的嵌套数组,并希望将元素推送到特定索引,但这些元素被添加到所有索引。
let arr = new Array(4).fill([])
arr => Array(4) [ [], [], [], [] ] //this is what I want
arr[0].push(3)
arr => Array(4) [ [3], [3], [3], [3] ] //I only wanted to push 3 to first index,
//why do all indexes have this element?
Run Code Online (Sandbox Code Playgroud)
任何有关如何更新一个索引的帮助将不胜感激。
let arr = new Array(4).fill([])
Run Code Online (Sandbox Code Playgroud)
这是创建arr
一个由四个对同一数组的引用组成的数组([]
作为参数传递)。因此,修改任何引用都会修改底层数组,并且由于所有引用都引用它,因此在记录对象时您会注意到这一点。
> arr[0] === arr[1]
< true
Run Code Online (Sandbox Code Playgroud)
只需使用一个好的 ol' for
,或者即使[[],[],[],[]]
我们只谈论 4 个元素,也可以简单地使用。
let arr = new Array(4)
for (let i = 0; i < arr.length; i++)
arr[i] = new Array()
Run Code Online (Sandbox Code Playgroud)
> arr[0] === arr[1]
< false
Run Code Online (Sandbox Code Playgroud)