@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' },
    ],
  }
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
this.setState(({ items }) => ({
  items: items.map((n, i) => ({ ...n, id: i })),
}));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Aleksandr-JS-Developer
@Aleksandr-JS-Developer
Бери и делай
Вам нужен arr.sort();

Примерно так:
const awesomeSortFoo = ( a, b ) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0;

/*
let arr = [ {id: 1}, {id: 12}, {id: 5}] ;
arr.sort( awesomeSortFoo );
console.log( arr );  // [ {id: 1}, {id: 5}, {id: 12} ];
*/

state.items.sort( awesomeSortFoo );


Ссылки:
arr.sort() (ru)

На всякий случай:
Функции стрелки
Условный оператор „?“
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽
08 мар. 2021, в 08:37
3000 руб./за проект
08 мар. 2021, в 07:04
3000 руб./за проект
08 мар. 2021, в 06:23
12000 руб./за проект