Senthil
Senthil

Reputation: 1101

How to change key value in the nested object array javascript

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

Answers (2)

brk
brk

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

Deryck
Deryck

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

Related Questions