У меня проблема в течение циклаНеправильное значение в течение цикла
var a={ name:""};
var nameList=['jack','luck'];
var data=[];
for(var i=0;i<nameList.length;i++){
a.name=nameList[i];
data.push(a);
}
console.log(data) //output [Object { name="luck"}, Object { name="luck"}]
, который я хочу данные [Объект {имя = «Гнездо»}, {имя объекта = «удачи»}].
И когда я изменил код на data.push({name:nameList[i]})
и data[i] = {name:nameList[i]}
в цикле, они оба возвращают правильное значение, которое я ожидаю.
Может ли кто-нибудь сказать мне, в чем разница?
так что вы имеете в виду a.name = nameList [i] делает nameList [i] ссылкой на a.name? – chunterg
Нет, я говорю, что 'a' всегда имеет один и тот же объект. Когда вы используете 'data.push (a)', вы помещаете ссылку на 'a' в свой массив. Это тот же самый объект **, следующий итерации, когда вы перезаписываете его имя. – meagar