我有一个大数组,然后为某些字段提取唯一的键/值对,如下所示:
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
}
]
}
}
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);