我试图创建一个字典数组,然后使用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 } ]
这是理想的行为。