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

Допустим, есть массив объектов -

[{token: '1'},{token: '2', value:23},{token: '3', name:'superman'},{token: '4'}]

Необходимо добавить в каждый массив ключ, равный значению токена и вывести один объект такого вида:

{'1': {token: 1},'2':{token: 2, value:23},'3':{token: 3, name:'superman'},'4': {token: 4}}

Можно пользоваться только map и reduce.


Ответы (2 шт):

Автор решения: Denis640Kb

    let arr = [{token: '1'},{token: '2', value:23},{token: '3', name:'superman'},{token: '4'}];

    let result = []; // Массив чисто для демонстрации
    let obj = new Object(); //Создаём объект
    arr.forEach(function (c) { // Для каждого элемента исходного массива
        obj[c.token] = c; // Записываем ключ равный токену и значение
    });
    result.push(obj); // Для демонстрации добавляем объект в массив(Можете и просто работать с этим объектом).
    console.log(result); // Выводим в консоль 

→ Ссылка
Автор решения: Exploding Kitten

Если использоваться только reduce, можно так:

let arr = [{token: '1'},{token: '2', value:23},{token: '3', name:'superman'},{token: '4'}];

let result = arr.reduce((acc, value) => (acc[value.token] = value, acc), {});
console.log(result);

→ Ссылка