[英]How convert json in array by JS
我需要轉換JSON數據
[{"Date":"2014","Amount1":90,"Amount2":800}, {"Date":"2015","Amount1":110,"Amount2":300},{"Date":"2016","Amount1":3000,"Amount2":500}]
至
[['Date', 'Amount1', 'Amount2'],
['2014', 90, 800],
['2015', 110, 300],
['2016', 3000, 500]]
我該怎么做?
使用Array#reduce
和Array#map
方法。
var data = [{ "Date": "2014", "Amount1": 90, "Amount2": 800 }, { "Date": "2015", "Amount1": 110, "Amount2": 300 }, { "Date": "2016", "Amount1": 3000, "Amount2": 500 }]; // iterate over the array value var res = data.reduce(function(arr, o) { // push the new value to array arr.push( // generate object value array using the key array arr[0].map(function(k) { // return the property value return o[k] }) ); // return the updated array return arr; // set initial variable as array with // fist element as object property array }, [Object.keys(data[0])]); console.log(res);
我建議為鍵使用輔助數組,保持屬性的所需順序和值的Array#map
。 然后將鍵應用於數組的開頭。
var data = [{ "Date": "2014", "Amount1": 90, "Amount2": 800 }, { "Date": "2015", "Amount1": 110, "Amount2": 300 }, { "Date": "2016", "Amount1": 3000, "Amount2": 500 }], keys = Object.keys(data[0]), result = data.map(function (o) { return keys.map(function (k) { return o[k]; }); }); result.unshift(keys); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
ES6
var data = [{ "Date": "2014", "Amount1": 90, "Amount2": 800 }, { "Date": "2015", "Amount1": 110, "Amount2": 300 }, { "Date": "2016", "Amount1": 3000, "Amount2": 500 }], keys = Object.keys(data[0]), result = data.map(o => keys.map(k => o[k])); result.unshift(keys); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
你也可以循環2次扔你的JSON對象
var obj = [{"Date":"2014","Amount1":90,"Amount2":800},{"Date":"2015","Amount1":110,"Amount2":300},{"Date":"2016","Amount1":3000,"Amount2":500}];
var result = [];
result.push(Object.keys(obj[0]));
for (var subObj in obj){
var arr = [];
for (var item in obj[subObj]) arr.push(obj[subObj][item]);
result.push(arr);
}
console.log(result); // [ [ 'Date', 'Amount1', 'Amount2' ],[ '2014', 90, 800 ],[ '2015', 110, 300 ],[ '2016', 3000, 500 ] ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.