Как сгруппировать вложенные объекты с одинаковыми значениями свойств? Всем доброго дня! Пытаюсь решить похожую задачу:
Допустим, имеется объект с повторяющимися свойствами вложенных объектовvar obj = {
[0] = {
title: 'Дверь',
color: 'Белая'
}
[1] = {
title: 'Дверь',
color: 'Белая'
}
[2] = {
title: 'Дверь',
color: 'Черная'
}
[3] = {
title: 'Дверь',
color: 'Черная'
}
[4] = {
title: 'Дверь',
color: 'Серая'
}
}
Необходимо на их основе выстроить новый объект такого видаvar obj = {
[0] = {
title: 'Дверь',
color: 'Белая',
count: 2
}
[1] = {
title: 'Дверь',
color: 'Черная',
count: 2
}
[2] = {
title: 'Дверь',
color: 'Серая',
count: 1
}
}
P.S. Значение свойства "title" может изменяться так же, как и "color"

21 Авг 2019 в 07:03
213 +1
1
Ответы
1

Для решения данной задачи можно воспользоваться методом reduce(). Вот как можно это сделать:

const obj = {
0: {
title: 'Дверь',
color: 'Белая'
},
1: {
title: 'Дверь',
color: 'Белая'
},
2: {
title: 'Дверь',
color: 'Черная'
},
3: {
title: 'Дверь',
color: 'Черная'
},
4: {
title: 'Дверь',
color: 'Серая'
}
};
const result = Object.values(obj).reduce((acc, item) => {
const key = `${item.title}_${item.color}`;
if(acc[key]) {
acc[key].count++;
} else {
acc[key] = {
title: item.title,
color: item.color,
count: 1
};
}
return acc;
}, {});
console.log(Object.values(result));

Этот код создаст новый объект, где повторяющиеся свойства "title" и "color" будут сгруппированы и будет добавлено свойство "count" показывающее количество повторений.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир