-1

How can i modify value inside object?

For example from this object that contain total of days

const data = {
"A": [{
         id: 1,
         day: 12
     },{
         id: 2,
         day: 14
     }]
 }

And add 1 day to day object to become something like this

const data = {
"A": [{
         id: 1,
         day: 13
     },{
         id: 2,
         day: 15
     }]
 } 
Sebastian Simon
  • 18,263
  • 7
  • 55
  • 75
myrul
  • 33
  • 5
  • 1
    Familiarize yourself with [how to access and process nested objects, arrays or JSON](https://stackoverflow.com/q/11922383/4642212) and use the available [`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#Methods_of_the_Object_constructor) and [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Methods) methods. – Sebastian Simon Nov 11 '19 at 08:20
  • 1
    Does this one-liner do what you want — `Object.values(data).forEach((array) => array.forEach((obj) => ++obj.day));`? Note that it mutates the original `data` object. – Sebastian Simon Nov 11 '19 at 08:23

1 Answers1

3
data.A.forEach(item => item.day++);

Working snippet:

const data = { A: [{ id: 1, day: 12 }, { id: 2, day: 14 }] };

data.A.forEach(item => item.day++);

console.log(data)

Or, if you don't want to mutate data:

const newData = { A: data.A.map(item => ({id: item.id, day: item.day + 1})) }

Working snippet:

const data = { A: [{ id: 1, day: 12 }, { id: 2, day: 14 }] };

const newData = {
  A: data.A.map(item => ({ id: item.id, day: item.day + 1 }))
}

console.log(newData)
adiga
  • 34,372
  • 9
  • 61
  • 83
Vlad Vidac
  • 978
  • 1
  • 10
  • 26