Array of Object - делить информацию по значениям в ней - PullRequest
1 голос
/ 11 февраля 2020

У меня есть массив объектов:

const array = [ {
            "Type": "DefinedBenefitPension",
            "Description": null,
            "Year": 2016,
            "Participants": 9.0,
            "TotalAssets": 6668305.0,
            "NetAssets": 6668305.0,
            "PlanName": null
        },
        {
            "Type": "DefinedContributionPension",
            "Description": null,
            "Year": 2016,
            "Participants": 72.0,
            "TotalAssets": 17230395.0,
            "NetAssets": 17230395.0,
            "PlanName": null
        },
        {
            "Type": "DefinedBenefitPension",
            "Description": null,
            "Year": 2017,
            "Participants": 7.0,
            "TotalAssets": 2096999.0,
            "NetAssets": 2096999.0,
            "PlanName": null
        }...
    ];

Это всего лишь небольшой фрагмент данных. Существует много разных типов (не только DefinedBenefitPension и DefinedContributionPension). Я сделал массив со всеми уникальными типами:

const uniquePensionTypes = data => {
    const unique = [...new Set(data.map(plan => plan.Type))];
    return unique;
};

Где я передаю исходный массив в качестве данных. Теперь мне нужно разделить Participants и TotalAssets по тем же типам. Из этого примера мне нужно иметь массивы с именем definedBenefitPension

DefinedBenefitPensionParticipants = [9,7]
DefinedContributionPensionParticipants = [72]

Как я могу это сделать?

1 Ответ

2 голосов
/ 11 февраля 2020

Если data - это целый массив объектов.

data.reduce( ( resObj, item ) => ({
  ...resObj,
  [ item.Type ]: [
    ...( resObj[ item.Type ] || [] ),
    item.Participants
  ]
}), {})

Это даст вам объект типа

{
    DefinedBenefitPension:[9,7],
    DefinedContributionPension:[72]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...