从平面对象创建键:值对象

时间:2018-05-28 14:39:42

标签: javascript api ecmascript-6

我正在使用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 :(得分:2)

const result = {};
for(const {name, value} of array)
 result[name] = { value };

一个普通的旧for循环就可以了。使用函数式编程,您必须使用reduce将其简化为一个对象map始终返回一个数组。

const result = array.reduce((res, {name, value}) => ({ ...res, [name]: {value}}), {});

答案 1 :(得分:2)



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)




答案 2 :(得分:0)

您可以使用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)