gpt4 book ai didi

JavaScript 按相同的值对相似的对象进行分组

转载 作者:行者123 更新时间:2023-11-30 06:11:04 24 4
gpt4 key购买 nike

我有一个对象数组,我需要按相同的值对它们进行分组,我需要按多维数组对它们进行分组

const source = [
{name: 'A', age: 23, id: 0},
{name: 'A', age: 23, id: 1},
{name: 'B', age: 15, id: 34},
{name: 'B', age: 15, id: 45},
{name: 'B', age: 15, id: 32},
{name: 'C', age: 15, id: 32},
];


[

像这个结构一样,所有相同的对象都应该在一个数组中按数组分组。

  [
{name: 'A', age: 23, id: 0},
{name: 'A', age: 23, id: 1}
],
[
{name: 'B', age: 15, id: 34},
{name: 'B', age: 15, id: 45},
{name: 'B', age: 15, id: 32}
],
[
{name: 'C', age: 15, id: 32},
]
]

我试过这样但没有运气。

const result = source.reduce((accumulator, item) => {
if (accumulator && accumulator.length) {
const found = accumulator.find(group => {
return group && group.length
? group.find(_transaction =>
// check the same object
return false
)
: false;
});
if (found) {

console.log(found);
}
} else {
accumulator.push([item]);
}

return accumulator;
}, []);

最佳答案

创建一个由 name 属性索引的对象,其值是包含 source 项的数组,然后获取对象的值:

const source = [
{name: 'A', age: 23, id: 0},
{name: 'A', age: 23, id: 1},
{name: 'B', age: 15, id: 34},
{name: 'B', age: 15, id: 45},
{name: 'B', age: 15, id: 32},
{name: 'C', age: 15, id: 32},
];
const sourceItemsByName = {};
for (const obj of source) {
if (!sourceItemsByName[obj.name]) {
sourceItemsByName[obj.name] = [];
}
sourceItemsByName[obj.name].push(obj);
}
const output = Object.values(sourceItemsByName);
console.log(output);

关于JavaScript 按相同的值对相似的对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58900440/

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