簡體   English   中英

根據對象數組創建對象

[英]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.

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