Итерация объектов в массиве и изменение значений в объекте

Мой массив выглядит следующим образом

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

Я хочу изменить значения всех ключей - имя, отчество и фамилию в этом массиве.

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 )    
});

Любая помощь в этом приветствуется. Заранее спасибо.


person Kritavarman    schedule 27.02.2017    source источник
comment
Возможный дубликат изменить свойство объекта в массиве объектов   -  person Heretic Monkey    schedule 27.02.2017


Ответы (4)


Я думаю, что вы пытаетесь достичь карты

Вы можете сделать что-то вроде этого:

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"
  }
})
person Lucas Katayama    schedule 27.02.2017

Вы можете использовать map() и reduce() и возвращать новый массив объектов.

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)

person Nenad Vracar    schedule 27.02.2017

Сопоставьте объекты, затем измените значения каждой записи:

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);

person baao    schedule 27.02.2017

person    schedule
comment
Это создает массив массивов с отсутствующими ключами, а не массив объектов - person baao; 27.02.2017
comment
@baao OP не упомянул конкретный вывод. Он только сказал, что я хочу изменить ценности.. * - person Weedoze; 28.02.2017