迭代更新字典数组(Javascript)中的值

时间:2019-02-18 03:44:03

标签: javascript arrays dictionary

我试图创建一个字典数组,然后使用Array.map()迭代更新那些字典中的各个值。似乎每次迭代,尽管我通过数组中的索引引用了每个单独的字典,但 all 字典仍在更新中。

以下是显示此行为的代码段:

testarray = Array(5).fill({'number': 0});
testarray.map(function(element, index) {
    testarray[index]['number'] = Math.random()
});

我是Java语言的主要新手,可能在Python中考虑过多,但是有办法避免这种行为,或者更好地实现我创建字典列表的目标,每个字典的各个值都可以可以独立更新?

编辑:我添加一个示例来说明,当从其他列表中获取要插入到词典列表中的元素时,此行为也适用:

letterarray = ['a', 'b', 'c', 'd', 'e'];
testarray = Array(5).fill({'letter': 'x', 'number': 0});
testarray.map(function(element, index) {
    testarray[index]['letter'] = letterarray[index]
    testarray[index]['number'] = Math.random()
});

这最终会返回:

[ { letter: 'e', number: 0.7262187794379416 },
  { letter: 'e', number: 0.7262187794379416 },
  { letter: 'e', number: 0.7262187794379416 },
  { letter: 'e', number: 0.7262187794379416 },
  { letter: 'e', number: 0.7262187794379416 } ]

相对于:

[ { letter: 'a', number: 0.7262187794379416 },
  { letter: 'b', number: 0.9870744758968584 },
  { letter: 'c', number: 0.16493191974189658 },
  { letter: 'd', number: 0.6403787941360672 },
  { letter: 'e', number: 0.49447691255595005 } ]

这是理想的行为。

0 个答案:

没有答案