簡體   English   中英

將2D表格數據條目轉換為JavaScript中的對象數組

[英]Convert 2d tabular data entries into an array of objects in JavaScript

我有一個JS數組:

var arr = [["Ashley","2017-01-10",80],
       ["Ashley","2017-02-10",75],
       ["Ashley","2017-03-10",85],
       ["Clara","2017-01-10",90],
       ["Clara","2017-02-10",82]];

並希望使用嵌套對象創建一個新數組。 想法是在新對象中具有名稱,時間段和分數。 它看起來應該像這樣:

var newArr = [{"name":"Ashley", "2017-01-10":80, "2017-02-10":75, "2017-03-10":85},
              {"name":"Clara", "2017-01-10":90, "2017-02-10":82}];

您可以使用Array#reduce並將純JS對象用作映射,以在遍歷array按其關聯的人工名稱臨時存儲對象:

 var array = [ ["Ashley", "2017-01-10", 80], ["Ashley", "2017-02-10", 75], ["Ashley", "2017-03-10", 85], ["Clara", "2017-01-10", 90], ["Clara", "2017-02-10", 82] ] var result = [] array.reduce(function(map, e) { map[e[0]] || result.push(map[e[0]] = { name: e[0] }) map[e[0]][e[1]] = e[2] return map }, {}) console.log(result) 
 .as-console-wrapper { min-height: 100%; } 

您可以使用哈希表作為名稱,並使用它收集其他數據。

 var array = [["Ashley", "2017-01-10", 80], ["Ashley", "2017-02-10", 75], ["Ashley", "2017-03-10", 85], ["Clara", "2017-01-10", 90], ["Clara", "2017-02-10", 82]], grouped = array.reduce(function (hash) { return function (r, a) { if (!hash[a[0]]) { hash[a[0]] = { name: a[0] }; r.push(hash[a[0]]); } hash[a[0]][a[1]] = a[2]; return r; }; }(Object.create(null)), []); console.log(grouped); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM