簡體   English   中英

如何在 javascript 中創建動態多維對象數組

[英]how to create dynamic multi-dimensional array of objects with in javascript

我有一組包含汽車信息的對象。 我想對categoryId進行分組

var car = [
  { category: 1, model: "bmw" },
  { category: 1, model: "benz" },
  { category: 1, model: 'ford' }
  { category: 2, model: "kia" },
  { category: 2, model: "fiat" },
  { category: 3, model: "mg" },
];

我想要這個結果

[  
  [
    { category: 1, model: 'bmw' },
    { category: 1, model: 'benz' },
    { category: 1, model: 'ford' }
  ],
  [ 
    { category: 2, model: 'kia' },
    { category: 2, model: 'fiat' }
  ],
  [ 
    { category: 3, model: 'mg' }
  ]
]

這是我的解決方案,但我想要一種基於 reduce 的結果的方法,或者......我不想在forEach中使用if

let groupedCars = [];
cars.forEach((car) => {
  if (!groupedCars[car.category]) {
    groupedCars[car.category] = [];
  }
  groupedCars[car.category].push(car);
});

使用Array.prototype.reduce()方法的解決方案。 使用reduce遍歷數組並按類別分組,最后使用Object.values()得到結果。

 const car = [ { category: 1, model: 'bmw' }, { category: 1, model: 'benz' }, { category: 1, model: 'ford' }, { category: 2, model: 'kia' }, { category: 2, model: 'fiat' }, { category: 3, model: 'mg' }, ]; const ret = Object.values( car.reduce((prev, c) => { const p = prev; const key = c.category; p[key] = p[key]?? []; p[key].push({...c }); return p; }, {}) ); console.log(ret);

不清楚您所說的基於 ES6 的結果是什么意思。 但是,您可以嘗試使用reduce方法。

注意: Javascript arrays 以索引0開頭,因此,您可能需要在代碼中添加一些邏輯來修復該問題

暫無
暫無

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

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