Создание ключа: объекта значения из плоского объекта - PullRequest
0 голосов
/ 28 мая 2018

Я использую Javascript для получения данных из API. Я получаю следующий список объектов.

[
    {name: 'Cat', value: 2, extra: 'data'},
    {name: 'Dog', value: 3, extra: 'data'}
]

Я пытаюсь перейти к следующей форме

[
    cat: {value: 2},
    dog: {value: 3}
]

В настоящее время я пытаюсь использовать карту, но не вижу, где находится ключевая часть.

return data.map((item) => ({
    value: item.value
}));

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

var data = [
    {name: 'Cat', value1: 2, value2: 3},
    {name: 'Dog', value1: 3, value2: 4}
]

var result = data.map((item) => {
    var name = item.name
    delete item.name
    //if you want to modify some property
    item.value1 = item.value1 + "$"
    return {[name]: {...item}}
})

console.log(result)
0 голосов
/ 28 мая 2018

Вы можете использовать Object.assign() с методом map() для возврата объекта в результате.

const data = [{name: 'Cat', value: 2},{name: 'Dog', value: 3}]

const result = Object.assign({}, ...data.map(({name, value}) => ({[name]: {value}})))
console.log(result)
0 голосов
/ 28 мая 2018
const result = {};
for(const {name, value} of array)
 result[name] = { value };

Простой старый for делает это.При функциональном программировании вам придется использовать reduce, чтобы свести его к одному объекту , map всегда возвращает массив.

const result = array.reduce((res, {name, value}) => ({ ...res, [name]: {value}}), {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...