我正在尝试使用typescript从像这样的对象数组中构建一个json对象:[
[
{ attribute: 'a', modifier: 121 },
{ attribute: 'b', modifier: 67 },
{ attribute: 'c', modifier: 121 },
{ attribute: 'd', modifier: 67 }
]
我想得到类似的东西:
{
a: 121,
b: 67,
c: 121,
d: 67
}
但我无法理解高阶函数以使其工作。
答案 0 :(得分:4)
您可以使用reduce
方法接受参数 回调功能。
let array=[
{ attribute: 'a', modifier: 121 },
{ attribute: 'b', modifier: 67 },
{ attribute: 'c', modifier: 121 },
{ attribute: 'd', modifier: 67 }
];
let obj=array.reduce(function(obj,item){
obj[item.attribute] = item.modifier;
return obj;
},{});
console.log(obj);
答案 1 :(得分:2)
您可以将Object.assign
与Array#map
结合使用。
var array = [{ attribute: 'a', modifier: 121 }, { attribute: 'b', modifier: 67 }, { attribute: 'c', modifier: 121 }, { attribute: 'd', modifier: 67 }],
result = Object.assign(...array.map(o => ({ [o.attribute]: o.modifier })));
console.log(result);
var array = [{ attribute: 'a', modifier: 121 }, { attribute: 'b', modifier: 67 }, { attribute: 'c', modifier: 121 }, { attribute: 'd', modifier: 67 }],
result = Object.assign(...array.map(({ attribute, modifier }) => ({ [attribute]: modifier })));
console.log(result);
答案 2 :(得分:1)
试试这个。
var arr = [
{ attribute: 'a', modifier: 121 },
{ attribute: 'b', modifier: 67 },
{ attribute: 'c', modifier: 121 },
{ attribute: 'd', modifier: 67 }
]
var map = {};
arr.forEach( function(item){ map[ item.attribute ] = item.modifier });
console.log( JSON.stringify( map, 0, 4 ) )