Как добавить идентификатор ключа в массив объектов в javascript

#javascript #arrays #loops #object

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

Вопрос:

У меня есть массив объектов, которые необходимо добавить id в javascript.

 function addKey(obj){
 return obj.map(e=>({...e, id:index})
}

var obj=[
  {name: "s1"},
  {name: "s2"}
]


Expected Output

[
  {name: "s1", id:0 },
  {name: "s2", id:1 }
]
  

Ответ №1:

используя object.assign, вы можете добавить ключ

  var obj = [{
     name: 's1'
 }, {
  name: 's2'
  }];

 var result = obj.map(function(el,index) {
 var o = Object.assign({}, el);
 o.id = index;
 return o;
})

console.log(result);
  

Комментарии:

1. Зачем использовать Object.assign , когда OP уже использовал синтаксис распространения? например { ...e, id: index }

Ответ №2:

Вы можете добавить id свойство, добавив индекс Array.prototype.map обратного вызова.

 const
  obj = [
    { name: "s1" },
    { name: "s2" }
  ],
  offset = 2;

console.log(obj.map((item, id) => ({ ...item, id: id   offset })));  

Если вы хотите изменить объект на месте (без загрязнения памяти), вы можете попробовать следующее:

 const
  obj = [
    { name: "s1" },
    { name: "s2" }
  ],
  offset = 2;

obj.forEach((item, index) => item.id = index   offset)

console.log(obj);  

Комментарии:

1. как насчет того, когда я хочу начать подсчет или идентификатор со статического числа, например 2

2. @d’reaper Я добавил смещение, чтобы показать, как его добавить.