2017-03-24 71 views
1

我具有存储这样的数据的平JSON数组:转换扁平JSON阵列到JSON对象中的NodeJS


[ 
{ 
    "prop1": "prop1Data1" 
}, 
{ 
    "prop2": "prop2Data1" 
}, 
{ 
    "prop3.name": "Tom" 
} 
] 

我怎样才能将该数据转换成简单的JSON对象在节点JS这样的:


{ "prop1": "prop1Data1", "prop2": "prop2Data1", "prop3.name": "Tom" } 
+0

几分钟前几乎有确切的问题。 http://stackoverflow.com/questions/43008212/reduce-array-of-objects-into-object/43008248 –

+0

嗯,不完全。 '数组[0]'?还请阅读'json'的使用说明。 – trincot

+0

@ maytham-ɯɐɥʇʎɐɯ,不是。有字符串而不是对象。 –

回答

5

你可以使用Object.assign和使用spread syntax ...的阵列。

var array = [{ prop1: "prop1Data1" }, { prop2: "prop2Data1" }, { "prop3.name": "Tom" }], 
 
    object = Object.assign({}, ...array); 
 

 
console.log(object);

ES5与Array#reduce和通过迭代的键。

var array = [{ prop1: "prop1Data1" }, { prop2: "prop2Data1" }, { "prop3.name": "Tom" }], 
 
    object = array.reduce(function (r, o) { 
 
     Object.keys(o).forEach(function (k) { 
 
      r[k] = o[k]; 
 
     }); 
 
     return r; 
 
    }, {}); 
 

 
console.log(object);

+0

它给我的语法错误...... – realcodes

+0

@realcodes,第二种方法是否适合你? –

0

,我已经做到了像这样,因为它是一个数组中的方式。

var original = [{"prop1": "prop1Data1"},{"prop2": "prop2Data1"},{"prop3.name": "Tom"}]; 

var propStore = { 
    prop1 : '', 
    prop2 : '', 
    prop3 : '' 
} 
propStore.prop1 = original[0]["prop1"]; 
propStore.prop2 = original[0]["prop2"]; 
propStore.prop3 = original[0]["prop3"]; 

console.log(propStore);