Reputation: 1101
I would like to know how to change the value in a nested object array using javascript.
how to change the "load": "undefined"
to "load":1
in the 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
}]
Upvotes: 2
Views: 3690
Reputation: 50291
forEach
does not return anything,your code is working fine so in your code the original object that is obj
will be changed and if you log it show load:1
. If you don't want to change original array use map which returns a new array
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)
Upvotes: 2
Reputation: 7658
You can do this easily with new ES2015+ syntax. Using the spread operator:
var result = obj.map(e => ({ ...e, load: 1 }));
This will keep all the other props and only change load
to what you want.
Also, FYI - [].forEach()
does not work this way.
Upvotes: 8