如何更改嵌套对象数组javascript中的键值

时间:2019-08-03 14:32:57

标签: javascript arrays object

我想知道如何使用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
}]

2 个答案:

答案 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)