как объединить массив по значению

        "days": [
        {
            "date": "2023-09-20T03:00:00+03:00",
            "views": 1289,
            "clicks": 59,
            "ctr": 4.58,
            "cpc": 13.85,
            "sum": 816.89,
            "atbs": 3,
            "orders": 0,
            "cr": 0,
            "shks": 0,
            "sum_price": 0,
            "apps": [
                {
                    "views": 95,
                    "clicks": 3,
                    "ctr": 3.16,
                    "cpc": 19.8,
                    "sum": 59.39,
                    "atbs": 1,
                    "orders": 0,
                    "cr": 0,
                    "shks": 0,
                    "sum_price": 0,
                    "nm": [
                        {
                            "views": 50,
                            "clicks": 2,
                            "ctr": 4,
                            "cpc": 15.76,
                            "sum": 31.51,
                            "atbs": 1,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467195
                        },
                        {
                            "views": 45,
                            "clicks": 1,
                            "ctr": 2.22,
                            "cpc": 27.88,
                            "sum": 27.88,
                            "atbs": 0,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467194
                        }
                    ],
                    "appType": 1
                },
                {
                    "views": 849,
                    "clicks": 36,
                    "ctr": 4.24,
                    "cpc": 14.9,
                    "sum": 536.31,
                    "atbs": 1,
                    "orders": 0,
                    "cr": 0,
                    "shks": 0,
                    "sum_price": 0,
                    "nm": [
                        {
                            "views": 532,
                            "clicks": 16,
                            "ctr": 3.01,
                            "cpc": 20.76,
                            "sum": 332.09,
                            "atbs": 0,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467195
                        },
                        {
                            "views": 317,
                            "clicks": 20,
                            "ctr": 6.31,
                            "cpc": 10.21,
                            "sum": 204.22,
                            "atbs": 1,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467194
                        }
                    ],
                    "appType": 32
                },
                {
                    "views": 345,
                    "clicks": 20,
                    "ctr": 5.8,
                    "cpc": 11.06,
                    "sum": 221.19,
                    "atbs": 1,
                    "orders": 0,
                    "cr": 0,
                    "shks": 0,
                    "sum_price": 0,
                    "nm": [
                        {
                            "views": 192,
                            "clicks": 10,
                            "ctr": 5.21,
                            "cpc": 12.24,
                            "sum": 122.41,
                            "atbs": 0,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467195
                        },
                        {
                            "views": 153,
                            "clicks": 10,
                            "ctr": 6.54,
                            "cpc": 9.88,
                            "sum": 98.78,
                            "atbs": 1,
                            "orders": 0,
                            "cr": 0,
                            "shks": 0,
                            "sum_price": 0,
                            "name": "Пуховик зимний с капюшоном стеганый",
                            "nmId": 175467194
                        }
                    ],
                    "appType": 64
                }
            ]
        }]

Всем привет подскажите как сделать из такого массива, вот такое:

"175467195": [
  "views": 774,
  "clicks": 28,
],
"175467194": [
  "views": 515,
  "clicks": 31,
],

Заранее спасибо


Ответы (1 шт):

Автор решения: zzit

Попробуйте такой код

const result = {};

data.days.forEach(day => {
  day.apps.forEach(app => {
    app.nm.forEach(nm => {
      const { nmId, views, clicks } = nm;
      if (!result[nmId]) {
        result[nmId] = { views, clicks };
      } else {
        result[nmId].views += views;
        result[nmId].clicks += clicks;
      }
    });
  });
});

где data это обьект в котором находиться изначальный обьект

→ Ссылка