我想存储一个对象数组,但是看起来在对象存储在数组中之后,对它的任何引用都会更改原始值。将对象存储在数组中将覆盖值
"use strict"
var array = []
var object = {}
object.animal = "Cow"
array.push(object)
object.animal = "Chicken"
array.push(object)
console.log(array) //[ { animal: 'Chicken' }, { animal: 'Chicken' } ]
编辑: 我现在明白了对象存储在阵列中的引用。为了避免这种情况的一个方法是,建议如下但是怎么能这样在循环中实现申报对象为每个项目如以下几点:
"use strict"
var array = []
var object = {}
var people = ["Mike Brown", "John Brown", "Mary Sue"]
var fname, sname
people.forEach(function(person) {
[fname, sname] = person.split(" ")
object.name = person
object.fname = fname
object.sname = sname
array.push(object)
})
怎么样在循环情景按编辑? – Dercni
将“var object = {}”行移动到循环中。 – ash