gpt4 book ai didi

javascript - 对数组对象进行分组,使具有相似键的对象不会放入同一组中

转载 作者:行者123 更新时间:2023-12-03 02:04:06 25 4
gpt4 key购买 nike

我有以下名为“cars”的数组。我想对数据进行分组,以便具有相似键的对象不会放入组(数组)中。

var cars = [
{
'make': 'audi',
'model': 'r8',
'year': '2012'
}, {
'make': 'audi',
'model': 'rs5',
'year': '2013'
}, {
'make': 'ford',
'model': 'mustang',
'year': '2012'
}, {
'make': 'ford',
'model': 'fusion',
'year': '2015'
}, {
'make': 'kia',
'model': 'optima',
'year': '2012'
},
];

如何对数据进行分组,以便具有相同品牌的数组对象不会放入同一组中。结果如下所示。

var cars = {
'class_1': [
{ 'make' : 'audi',
'model': 'r8',
'year': '2012'

},{ 'make' : 'ford',
'model': 'mustang',
'year': '2012'
},{
'make': 'kia',
'model': 'optima',
'year': '2012'
}
],


'class_2': [
{
'make' : 'audi',
'model': 'rs5',
'year': '2013'
},{
'make': 'ford',
'model': 'fusion',
'year': '2015'
}
]
}

最佳答案

您可以使用 Array.reduce()helper 数组对项目进行分组。 helper 数组保存每个组中的品牌。对于每个对象,您可以使用Array.findIndex() 来查找不包含make 的组。如果不存在,则创建一个新组,并更新 helper

const cars = [{"make":"audi","model":"r8","year":"2012"},{"make":"audi","model":"rs5","year":"2013"},{"make":"ford","model":"mustang","year":"2012"},{"make":"ford","model":"fusion","year":"2015"},{"make":"kia","model":"optima","year":"2012"}];

const helper = [];
const result = cars.reduce((r, o) => {
let i = helper.findIndex((g) => !g[o.make]);
if(i === -1) {
i = helper.push({ [o.make]: true });
r[`class_${i}`] = [o];
} else {
r[`class_${i + 1}`].push(o);
helper[i][o.make] = true;
}

return r;
}, Object.create(null));

console.log(result);

关于javascript - 对数组对象进行分组,使具有相似键的对象不会放入同一组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com