@nikitabaks

Как назначить свойство, значения которого будут соответствовать позициям объектов в массиве?

Есть примерно такой стейт, где в объектах разные id:

state = {
    items: [
      { id: 31, value: 'item 31' },
      { id: 452, value: 'item 452' },
      { id: 5, value: 'item 5' },
      { id: 62, value: 'item 62' },
    ],
  }

Как сделать, чтобы id были по порядку?

state = {
    items: [
      { id: 0, value: 'item 31' },
      { id: 1, value: 'item 452' },
      { id: 2, value: 'item 5' },
      { id: 3, value: 'item 62' },
    ],
  }
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
this.setState(({ items }) => ({
  items: items.map((n, i) => ({ ...n, id: i })),
}));

Но вообще - зачем перезаписывать? Сразу кладите в стейт то, что нужно. Если, например, массив попадает в компонент через props, то

state = {
  items: this.props.items.map((n, i) => ({ ...n, id: i })),
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы