我想知道如何使用javascript更改嵌套对象数组中的值。
如何在"load": "undefined"
中将"load":1
更改为obj
var obj=[{
"id": "service",
"country": "AR",
"load": "undefined"
},{
"id": "fund",
"country": "CA",
"load": "undefined"
}]
var result = obj.forEach(e=>e.load=1);
Expected Output:
[{
"id": "service",
"country": "AR",
"load": 1
},{
"id": "fund",
"country": "CA",
"load": 1
}]
答案 0 :(得分:5)
您可以使用新的ES2015 +语法轻松地做到这一点。使用价差运算符:
var result = obj.map(e => ({ ...e, load: 1 }));
这将保留所有其他道具,仅将load
更改为所需的内容。
此外,仅供参考-[].forEach()
不能这样工作。
答案 1 :(得分:1)
forEach
不返回任何内容,您的代码工作正常,因此在您的代码中原始对象obj
将被更改,如果您登录它,则显示load:1
。如果您不想更改原始数组,请使用map,它会返回一个新数组
var obj = [{
"id": "service",
"country": "AR",
"load": "undefined"
}, {
"id": "fund",
"country": "CA",
"loading": "undefined"
}]
var result = obj.map(function(elem) {
return Object.assign({}, elem, {
// only change to 1 if value is undefined
load: elem.load === 'undefined' ? 1 : elem.load
})
});
console.log(result)