如何在JSON对象中更改对象的属性值

时间:2017-11-29 06:51:53

标签: javascript json

我有以下问题:



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;
&#13;
&#13;

期望商店[n]将等于商店价值,但它是错误的

{
    "shop1" : {
        "a" : "",
        "b" : "",
        "store":3
    },
    "shop3" : {
        "a" : "",
        "b" : "",
        "store":3
    }
}

它有什么问题?

1 个答案:

答案 0 :(得分:2)

因为您有一个a引用的单个对象,并且在每次迭代时更改它时实际上都会更改所有这些对象的值,因为您使用引用单个对象的引用。您可以使用Object destructing复制o中每个媒体资源的对象。

&#13;
&#13;
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;
&#13;
&#13;