Я действительно решил эту проблему, когда мне нужно сгруппировать массив объектов на основе пар ключ / значение свойства объекта.Если удалось заставить его работать, если он находится на первом уровне с отличным ключом / значениями (в данном случае «name»), но не тогда, когда он основан на значениях массива в содержащем объекте.Цени любую помощь!
Я хочу перейти от:
let array = [
{name: 'Name1', classes: [
{className: 'class1'}, {className: 'class2'}
]},
{name: 'Name2', classes: [
{className: 'class1'}
]},
{name: 'Name3', classes: [
{className: 'class2'}
]}
];
к чему-то вроде:
let resultArray = [
{
class1: [
{ name: 'Name1', classes: [{ className: 'class1' }, { className: 'class2' }] },
{ name: 'Name2', classes: [{ className: 'class1' }] }
]
},
{
class2: [
{ name: 'Name1', classes: [{ className: 'class1' }, { className: 'class2' }] },
{ name: 'Name3', classes: [{ className: 'class2' }] }
]
}
];
Редактировать: извините, не добавил пример Minimal, Complete и Verifiable,То, что у меня было раньше, было:
const groupByKey = (arr) =>
arr.reduce((r, v, i, a, k = v.name) => {
const rTemp = r;
rTemp[k] = rTemp[k] ? rTemp[k] : [];
rTemp[k].push(v);
return rTemp;
}, {});
, которое представляло его сгруппированным по имени (что, очевидно, не то, что я хотел, но работает на «первом уровне»)