Изменить значение ключа объекта

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть следующая карта над объектом с массивом объектов

 Object.values(props.roleRateOptions).map(el => {
  el.push(shift.roleRate);
  return el;
})
  

Он вернется в массив объектов, подобных этому

 [ {id:1},{id:2},{label:3} ]
  

Проблема в том, что когда я push(shift.roleRate) вызываю значение label вместо id , как я могу изменить его на id ? Или какой-либо обходной путь, может быть, я мог бы присвоить новое значение id, если я не могу это изменить? Заранее спасибо!

Ответ №1:

Вы могли бы переименовать это значение в IIFE:

  el.push((({ label, ...rest }) => ({ id: label, ...rest }))(shift.roleRate));
  

Или просто скопируйте это свойство перед:

  shift.roleRate.id = shift.roleRate.label;
 el.push(shift.roleRate);
  

Ответ №2:

Вы можете повторно отобразить объекты в массиве:

 var data = [{id:1},{id:2},{label:3}];

var res = data.map(x => ({ id: x.id || x.label}));

console.log(res);