Замена массива по его длине во вложенном JSON объекте с помощью .map () - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь заменить массив объектов по длине этого массива. Моя структура данных выглядит следующим образом:

[
  { 
    date: "2019-11-04", 
    transactionTypes: [
      type1: [
        {irrelevantObject1},
        {irrelevantObject2},
        {irrelevantObject3},
        {irrelevantObject4}
        ],
      type2: [
        {irrelevantObject1},
        {irrelevantObject2},
        {irrelevantObject3}
        ],
      ...
    ]
  }
]

Моя цель - заменить массив для каждого типа длиной массива:

 [
  { 
    date: "2019-11-04", 
    transactionTypes: [
      type1: 4,
      type2: 3,
      ...
    ]
  }
]

Я пробовал различные комбинации доступа к ключам через Object.keys (), а затем сопоставление et c. но я просто не могу понять это.

1 Ответ

2 голосов
/ 31 января 2020

l oop через массив данных и сопоставьте Object.entries из transactionTypes, чтобы иметь длины его массивов:

const data = [
  {
    date: "2019-11-04",
    transactionTypes: {
      type1: [
        { irrelevantObject1: "irrelevantObject1" },
        { irrelevantObject2: "irrelevantObject2" },
        { irrelevantObject3: "irrelevantObject3" },
        { irrelevantObject4: "irrelevantObject4" }
      ],
      type2: [
        { irrelevantObject1: "irrelevantObject1" },
        { irrelevantObject2: "irrelevantObject2" },
        { irrelevantObject3: "irrelevantObject3" }
      ]
    }
  }
];

const result = data.map(o => ({
  ...o,
  transactionTypes: Object.entries(o.transactionTypes).map(([k, arr]) => ({
    [k]: arr.length
  }))
}));

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