簡體   English   中英

將數組數組轉換為單個對象數組

[英]Converting an array of array to a single array of object

我有一個看起來像這樣的數據結構:

 let a = [
      ["base-certificate", 60, 3, 2022],
      ["case-certificate", 1, 3, 2022],
      ["standard-certificate", 7, 3, 2022],
    ];

我想把它改成這樣:

[{x:[3, 2022], base: 60, case:1, standard: 7}]

我嘗試在數組上使用 map 方法,例如:

 let a = [ ["base-certificate", 60, 3, 2022], ["case-certificate", 1, 3, 2022], ["standard-certificate", 7, 3, 2022], ]; let result = a.map((elem) => { let obj = {}; elem.forEach((e, i) => { obj["x"] = [e[2], e[3]]; obj[e[0]] = e[1]; }); return obj; }); console.log(result);

上面的代碼沒有得到想要的輸出。 最好的方法是什么?

您不需要mapforEach ,您可以刪除外部地圖。

此外,如果要刪除“-certificate”部分,可以使用split

像這樣的東西應該工作

 let a = [ ["base-certificate", 60, 3, 2022], ["case-certificate", 1, 3, 2022], ["standard-certificate", 7, 3, 2022], ]; let obj = {}; a.forEach((e, i) => { obj["x"] = [e[2], e[3]]; obj[e[0].split('-')[0]] = e[1]; }); console.log(obj);

map()用於創建數組。 你只需要一個對象,你應該在循環之外聲明它並使用forEach()來填充它。你不需要嵌套循環。

您可以使用replace()從名稱中刪除-certificate

 let a = [ ["base-certificate", 60, 3, 2022], ["case-certificate", 1, 3, 2022], ["standard-certificate", 7, 3, 2022], ]; let obj = {}; a.forEach((e, i) => { obj["x"] = [e[2], e[3]]; obj[e[0].replace('-certificate', '')] = e[1]; }); console.log(obj);

 let a = [ ["base-certificate", 60, 3, 2022], ["case-certificate", 1, 3, 2022], ["standard-certificate", 7, 3, 2022], ]; let obj = {}; a.forEach((e) => { obj["x"] = [e[2], e[3]]; obj[e[0].replace('-certificate',"")] = e[1]; }); console.log([obj]);

暫無
暫無

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

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