При работе с массивом объектов мне нужно обновить счет для любого объекта с type
из Select (Multiple Answer)
.
Каждый объект с type
из Select (Multiple Answer)
содержит data
массив объектов с запятой value
, такой как "Завышенная цена, Уникальная, Высокое качество".Эти значения должны быть разделены на их собственный объект и включены в новые count
и total
(сумма всех count
значений) для этого конкретного data
массива объекта.
const arr = [
{
data: [
{count: 7, total: 7, value: "N/A"},
],
name: "item 1",
type: "Yes/No",
}, {
data: [
{count: 5, total: 7, value: "N/A"},
{count: 2, total: 7, value: "Yellow"},
],
name: "item 2",
type: "Select (Single Answer)",
}, {
data: [
{count: 5, total: 7, value: "N/A"},
{count: 1, total: 7, value: "Overpriced,Unique,High quality"},
{count: 1, total: 7, value: "Reliable,High quality"},
],
name: "item 3",
type: "Select (Multiple Answer)",
},
];
ОжидаетсяРезультат
const result = [
{
data: [
{count: 7, total: 7, value: "N/A"},
],
name: "item 1",
type: "Yes/No",
}, {
data: [
{count: 5, total: 7, value: "N/A"},
{count: 2, total: 7, value: "Yellow"},
],
name: "item 2",
type: "Select (Single Answer)",
}, {
data: [
{count: 5, total: 10, value: "N/A"},
{count: 2, total: 10, value: "High quality"},
{count: 1, total: 10, value: "Overpriced"},
{count: 1, total: 10, value: "Unique"},
{count: 1, total: 10, value: "Reliable"},
],
name: "item 3",
type: "Select (Multiple Answer)",
},
];
Я пошел по пути использования функции reduce
, но он дает объект, далекий от желаемого результата:
Текущий код
arr.reduce((a, c) => {
a[c.data.value] = a[c.data.value] || { total: 0 };
a[c.data.value].total += 1;
return a;
}, {})
нежелательный результат
{ undefined: { total: 4 } }