我有以下问题:
var a = {
'a': '',
'b': ''
},
b = [1,3],
o = {};
for (i = 0; i<b.length; i++) {
o['shop' + b[i]] = a;
o['shop' + b[i]].store = b[i];
}
console.log(JSON.stringify(o));
&#13;
期望商店[n]将等于商店价值,但它是错误的
{
"shop1" : {
"a" : "",
"b" : "",
"store":3
},
"shop3" : {
"a" : "",
"b" : "",
"store":3
}
}
它有什么问题?
答案 0 :(得分:2)
因为您有一个a
引用的单个对象,并且在每次迭代时更改它时实际上都会更改所有这些对象的值,因为您使用引用单个对象的引用。您可以使用Object destructing复制o
中每个媒体资源的对象。
var a = {
'a': '',
'b': ''
};
var b = [1,3];
var o = {};
for (var i = 0; i < b.length; i++) {
o['shop' + b[i]] = {...a};
o['shop' + b[i]].store = b[i];
}
console.log(JSON.stringify(o));
&#13;