2017-03-24 113 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);