Typescript: добавьте атрибут id автоинкремента для каждого объекта в массиве

у меня есть этот массив объекта:

myArray = [
        {
            "edoId": "4010",
            "storeName": "ABBEVILLE"
        },
        {
            "edoId": "3650",
            "storeName": "AGEN"
        },
        {
            "edoId": "3298",
            "storeName": "AIX ALLEES PROVENCALES"
        },
        {
            "edoId": "3309",
            "storeName": "AIX JAS DE BOUFFAN"
        },
        {
            "edoId": "3313",
            "storeName": "AIX LA PIOLINE"
        },
        {
            "edoId": "2119",
            "storeName": "AIX LES BAINS"
        },
    ...
    ]

Я хочу автоматически увеличивать свойство я бы для каждого объекта моего массива, используя forEach (без цикла с myArray.length)

Предложения ?

i want звучит так, будто вы хотите, чтобы мы выполняли работу за вас, а не помогали, потому что вы застряли. Что пробовали, что не работает?
VLAZ 13.09.2018 18:48

так в чем проблема? попробуйте myArray = myArray.map((i, idx) => ({...i, id: idx}))

givehug 13.09.2018 18:50

при итерации array.forEach ((item, index)) вы получите элемент и индекс, индекс, который вы можете использовать в качестве идентификатора.

Jameel Moideen 13.09.2018 18:50
1
3
3 153
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это должно помочь

myArray.map(i => ({edoId: ++i.edoId ,storeName: i.storeName }))

1. Это не добавляет свойства id. 2. Он увеличивает edoId, хотя, вероятно, не должен. 3. Также нет свойства автоинкремента. Не в классическом смысле монотонной последовательности, генерируемой извне источника данных. 4. Это изменяет исходный источник, даже если он также создает копию.

VLAZ 13.09.2018 19:01
Ответ принят как подходящий

Вы можете использовать метод forEach(), как хотите, в своем вопросе:

myArray.forEach(function(item, index){
    item.id = index;
    // or do whatever you want using index
});

forEach() executes the provided callback once for each element present in the array in ascending order. It is not invoked for index properties that have been deleted or are uninitialized (i.e. on sparse arrays). callback is invoked with three arguments:

  1. the element value
  2. the element index
  3. the array being traversed

var myArray = [
        {
            "edoId": "4010",
            "storeName": "ABBEVILLE"
        },
        {
            "edoId": "3650",
            "storeName": "AGEN"
        },
        {
            "edoId": "3298",
            "storeName": "AIX ALLEES PROVENCALES"
        },
        {
            "edoId": "3309",
            "storeName": "AIX JAS DE BOUFFAN"
        },
        {
            "edoId": "3313",
            "storeName": "AIX LA PIOLINE"
        },
        {
            "edoId": "2119",
            "storeName": "AIX LES BAINS"
        }
    ];

myArray.forEach(function(item, index){
  item.id = index;
});

console.log(myArray);

Другие вопросы по теме