在新数组图中计数项目

问题描述 投票:0回答:1

我有一个大数组,然后为某些字段提取唯一的键/值对,如下所示:

    let dropdown = {};
    dropdown.make = [...new Set(vehicles.map((item) => item.Make))];
    dropdown.model = [...new Set(vehicles.map((item) => item.Model))];
    return dropdown;

这可以正常工作,并且将在新对象中返回make和model的所有唯一值。我还如何让它返回每个项目的计数?

因此,如果dropdown.model返回一个包含3个项目的数组,是否有可能获得三个项目中每个项目旁边的总数,以查看三个项目中每个项目的原始数组中有多少条记录?

当前,输出看起来像这样:

{
  "dropdown": {
    "make": [
      "Kia"
    ],
    "model": [
      "Carens",
      "Ceed"
    ],
    "colour": [
      "Silver",
      "White",
      "Black"
    ]
  }
}

什么是最好的输出方式,所以格式类似于此:

{
  "dropdown": {
    "make": [
      {
        "name": "Kia",
        "count": 5
      }
    ],
    "model": [
      {
        "name": "Carens",
        "count": 2
      },
      {
        "name": "Ceed",
        "count": 3
      }
    ],
    "colour": [
      {
        "name": "Silver",
        "count": 2
      },
      {
        "name": "Black",
        "count": 3
      }
    ]
  }
}
javascript
1个回答
0
投票

let vehicles = [
  {make: 'x', model: 'a'},
  {make: 'x', model: 'b'},
  {make: 'x', model: 'a'},
  {make: 'y', model: 'c'},
  {make: 'y', model: 'c'},
  {make: 'x', model: 'a'},
  {make: 'x', model: 'd'},
  {make: 'z', model: 'd'},
] 

let makes = Object.values(vehicles.reduce((makes, {make}) => {
  makes[make] = makes[make] || {name: make, count: 0};
  makes[make].count++;
  return makes;
}, {}));

let models = Object.values(vehicles.reduce((makes, {make}) => {
  makes[make] = makes[make] || {name: make, count: 0};
  makes[make].count++;
  return makes;
}, {}));

let dropdown = {makes, models};

console.log(dropdown);
© www.soinside.com 2019 - 2024. All rights reserved.