Изо всех сил, чтобы уменьшить - PullRequest
0 голосов
/ 01 апреля 2020

Нужна помощь по наилучшему способу объединения или сокращения всех счетов в массив объектов, если «startDate» равны.

От этого:

{
    "id": 0,
    "startDate": "2020-01-10T07:00:00.000Z", //Same
    "endDate": "2020-01-24T07:00:00.000Z",
    "bills": {
      "name": "Bill 1",
    }
},
{
    "id": 1,
    "startDate": "2020-01-10T07:00:00.000Z", //Same
    "endDate": "2020-01-24T07:00:00.000Z",
    "bills": {
      "name": "Bill 2",
    }
}

до этого:

{
    "id": 0,
    "startDate": "2020-01-10T07:00:00.000Z", 
    "endDate": "2020-01-24T07:00:00.000Z",
    "bills": [
               {"name": "Bill 1",},
               {"name": "Bill 2",}
             ]
}

1 Ответ

1 голос
/ 01 апреля 2020

Go поверх данных каждого элемента и создайте объект с ключами как startDate.
Если ключ не существует, добавьте ключ и значение.
Если ключ уже существует, добавить счета.

const update = data => {
  const res = {};
  data.forEach(item => {
    if (!res[item.startDate]) {
      res[item.startDate] = { ...item, bills: [] };
    }
    res[item.startDate].bills.push(item.bills);
  });
  return Object.values(res);
};

const data = [
  {
    id: 0,
    startDate: "2020-01-10T07:00:00.000Z", //Same
    endDate: "2020-01-24T07:00:00.000Z",
    bills: {
      name: "Bill 1"
    }
  },
  {
    id: 1,
    startDate: "2020-01-10T07:00:00.000Z", //Same
    endDate: "2020-01-24T07:00:00.000Z",
    bills: {
      name: "Bill 2"
    }
  }
];

console.log(update(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...