[英]Creating object based on array of objects
我想使用以下對象數組:
[
{ car: "bmw", model: "e46", price: "1000" },
{ car: "bmw", model: "e52", price: "2000" },
{ car: "bmw", model: "X5", price: "4000" },
{ car: "bmw", model: "X3", price: "4500" },
{ car: "audi", model: "A3", price: "1500"},
{ car: "audi", model: "A4", price: "2500"},
{ car: "audi", model: "TT", price: "2800"},
{ car: "audi", model: "A8", price: "3500"}
]
並將其轉換為:
let cars = {
bmw: {
e46: "1000",
e52: "2000",
X5: "4000"
},
audi: {
A3: "1500",
A4: "2500",
TT: "2800",
A8: "3500"
}
}
這是我的代碼:
let obj = {};
function order(arr) {
arr.forEach((e) => {
obj[e.car] = {
[e.model]: e.price
}
});
}
並且它僅返回所需格式的最后一個數據。 我該如何實現?
您每次迭代都要分配obj[e.car]
,應該每次迭代都添加一個項目
var arr = [ { car: "bmw", model: "e46", price: "1000" }, { car: "bmw", model: "e52", price: "2000" }, { car: "bmw", model: "X5", price: "4000" }, { car: "bmw", model: "e46", price: "1000" }, { car: "audi", model: "A3", price: "1500"}, { car: "audi", model: "A4", price: "2500"}, { car: "audi", model: "TT", price: "2800"}, { car: "audi", model: "A8", price: "3500"} ]; let obj = {}; function order(arr) { arr.forEach((e) => { if (!obj[e.car]){ obj[e.car] = {}; } obj[e.car][e.model] = e.price; }); } order(arr); console.log(obj);
這是給您所需結果的替代方法。 你可以試試看
var objsource=[ { car: "bmw", model: "e46", price: "1000" }, { car: "bmw", model: "e52", price: "2000" }, { car: "bmw", model: "X5", price: "4000" }, { car: "bmw", model: "e46", price: "1000" }, { car: "audi", model: "A3", price: "1500"}, { car: "audi", model: "A4", price: "2500"}, { car: "audi", model: "TT", price: "2800"}, { car: "audi", model: "A8", price: "3500"} ]; var car={}; var model={}; objsource.forEach(function(objs){ if(!car.hasOwnProperty(objs.car)){ car[objs.car]=""; } }); Object.keys(car).forEach(function(cars){ objsource.forEach(function(objs){ if(cars==objs.car){ model[objs.model]=objs.price; car[cars]=model; } }); model={}; }) console.log(car);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.