从对象数组构建Json

4

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

但是我就是无法理解高阶函数,以使其正常工作。
3个回答

5
您可以使用 reduce 方法,该方法接受一个回调函数作为参数
了解有关 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);


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

使用解构赋值技术,参考链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/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);


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接