Я хотел бы сохранить массив объектов, однако кажется, что после того, как объект хранится в массиве, любая ссылка на него изменяет исходное значение.Хранение объектов в массиве перезаписывает значение
"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' } ]
Edit: теперь я понимаю, объекты сохраняются в виде ссылок в массиве. Один из способов избежать этого является объявить объект для каждого элемента, как предлагается ниже, однако, как это может быть достигнуто в цикле, такие как:
"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