typescript 从对象数组构建Json

nvbavucw  于 2023-04-07  发布在  TypeScript
关注(0)|答案(3)|浏览(206)

我尝试使用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  
}

但我就是不能让我的头周围的高阶函数,使其工作。

xxhby3vn

xxhby3vn1#

你可以使用reduce方法,它接受参数一个回调函数。
阅读更多关于reduce方法here

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);
yk9xbfzb

yk9xbfzb2#

您可以将Object.assignArray#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);

关于destructuring assignment

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);
gg0vcinb

gg0vcinb3#

试试这个。

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 ) )

相关问题