如何从对象数组中提取单个对象的值

时间:2019-04-04 06:42:17

标签: javascript

我有一个这样的对象数组

const jsonx =[{"name":"John Doe"},{"name2":"Marry Doe"},{"name3":"Michael"}]

我想要实现的是如下数组中每个对象的值

{"name":"John Doe","name2":"Marry Doe","name3":"Michael"}

我尝试了以下方法,但未能获得所需的东西。

//console.log(Array.of(...jsonx));
//console.log(JSON.stringify(jsonx));

5 个答案:

答案 0 :(得分:3)

或者,您可以使用ES6的spread syntaxObject.assign。 (我最喜欢的做事方式)

const jsonx =[{"name":"John Doe"},{"name2":"Marry Doe"},{"name3":"Michael"}];
const res = Object.assign({}, ...jsonx);
console.log(res);

答案 1 :(得分:1)

您可以尝试使用Array.prototype.reduce()

  

reduce()方法在数组的每个成员上执行reducer函数(由您提供),从而产生单个输出值。

Object.assign()

  

Object.assign()方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

const jsonx =[{"name":"John Doe"},{"name2":"Marry Doe"},{"name3":"Michael"}];

var res = jsonx.reduce((a, c) => Object.assign(a, c), {});

console.log(res);

答案 2 :(得分:0)

您可以使用reduce

const jsonx =[{"name":"John Doe"},{"name2":"Marry Doe"},{"name3":"Michael"}]
    
    const res = jsonx.reduce((acc,curr) => ({...acc, ...curr}), {});
    
    console.log(res)

答案 3 :(得分:0)

您可以使用flatMap()reduce()

const jsonx =[{"name":"John Doe"},{"name2":"Marry Doe"},{"name3":"Michael"}]

let res = jsonx.flatMap(x => Object.entries(x)).reduce((ac,[k,v]) => ({...ac,[k]:v}),{})
console.log(res)

答案 4 :(得分:0)

您也可以尝试

jsonx.reduce((r, a) => Object.assign(r, a))

OR

Object.assign({}, ...jsonx)