Kritavarman
Kritavarman

Reputation: 28

Iteration of Objects in Array and changing values in object

My Array is as follows

var values = [
{"firstname":"A","middlename":"B","lastname":"C"},
{"firstname":"L","middlename":"M","lastname":"N"},
{"firstname":"X","middlename":"Y","lastname":"Z"}
];

I want to change values of all keys - firstname, middlename and lastname in this array.

var newValues = [];
angular.forEach(values, function(item, key) {
    changedValues = {};
    angular.forEach(item, function(value, key1) {
          var changedValue = value + "constant";
          changedValues[key1] = changedValue 
    });
    newValues .push(changedValues )    
});

Any help on this appreciated. Thanks in Advance.

Upvotes: 0

Views: 76

Answers (4)

baao
baao

Reputation: 73221

Map over the objects, then change the values of each entry:

var values = [{
    "firstname": "A",
    "middlename": "B",
    "lastname": "C"
  },
  {
    "firstname": "L",
    "middlename": "M",
    "lastname": "N"
  },
  {
    "firstname": "X",
    "middlename": "Y",
    "lastname": "Z"
  }
];

let newValues = values.map(v => {
  let obj = {};
  for (let k in v) {
    if (v.hasOwnProperty(k))
      obj[k] = v[k] + "constant";
  }
  return obj;
});

console.log(newValues);

Upvotes: 0

Nenad Vracar
Nenad Vracar

Reputation: 122027

You can use map() and reduce() and return new array of objects.

var values = [
  {"firstname":"A","middlename":"B","lastname":"C"},
  {"firstname":"L","middlename":"M","lastname":"N"},
  {"firstname":"X","middlename":"Y","lastname":"Z"}
]

var newValues = values.map(function(e) {
  return Object.keys(e).reduce(function(r, k) {
    return r[k] = e[k] + 'constant', r
  }, {})
})

console.log(newValues)

Upvotes: 0

Weedoze
Weedoze

Reputation: 13943

var values = [{
    "firstname": "A",
    "middlename": "B",
    "lastname": "C"
  },
  {
    "firstname": "L",
    "middlename": "M",
    "lastname": "N"
  },
  {
    "firstname": "X",
    "middlename": "Y",
    "lastname": "Z"
  }
];
console.log(values.map(o => {
  return Object.keys(o).map(n => o[n] += "constant")
}));

Upvotes: 2

Lucas Katayama
Lucas Katayama

Reputation: 4570

I think what are you trying to achieve is a map

You could do something like this:

var values = [
{"firstname":"A","middlename":"B","lastname":"C"},
{"firstname":"L","middlename":"M","lastname":"N"},
{"firstname":"X","middlename":"Y","lastname":"Z"}
];

var newArray = value.map(function(item) {
  return {
     "firstname" : item.firstname  + "constant",
     "middlename": item.middlename + "constant",
     "lastname"  : item.lastname   + "constant"
  }
})

Upvotes: 0

Related Questions