[英]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);
上面的代碼沒有得到想要的輸出。 最好的方法是什么?
您不需要map
和forEach
,您可以刪除外部地圖。
此外,如果要刪除“-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.