Как установить свойство каждого объекта внутри массива объектов? - PullRequest
1 голос
/ 04 апреля 2019

У меня есть этот массив в качестве примера:

array = [{id:3},{id:2},{id:4}]

Я хочу перебрать этот массив объектов и сделать каждый "id" из каждого объекта равным его позиции индекса внутри массива, чтобы сделать что-то вроде этого:

array =[{id:0},{id:1},{id:2}]

Есть идеи, как мне это сделать?

Спасибо всем за внимание!

Ответы [ 3 ]

2 голосов
/ 04 апреля 2019

Используя метод forEach, метод будет зацикливаться на каждом объекте в массиве, а затем для изменения значения свойства объекта на индекс элемента, вы должны передать объект и его индекс в качестве вторых аргументов, а затем приравнять его к свойству объекта.

let array = [{id:3},{id:2},{id:4}] 
 array.forEach((item, index) => { 
 item.id = index 
})
2 голосов
/ 04 апреля 2019

Простой map будет работать:

const array = [{id:3},{id:2},{id:4}];
const newArray = array.map((e, i) => ({ id: i }));
console.log(newArray);
.as-console-wrapper { max-height: 100% !important; top: auto; }

Если вы хотите сохранить все остальные свойства одинаковыми (если у вас есть несколько свойств):

const array = [{id:3, name: "A"},{id:2, name: "B"},{id:4, name: "C"}];
const newArray = array.map((e, i) => ({ ...e, id: i }));
console.log(newArray);
.as-console-wrapper { max-height: 100% !important; top: auto; }
1 голос
/ 04 апреля 2019

Для полноты вы можете перебрать массив с помощью простого цикла for:

for (var i = 0; i < array.length; i++) {
  array[i].id = i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...