L oop поверх объекта и группировать каждые 4 элемента в массиве в массиве - PullRequest
0 голосов
/ 02 мая 2020

Допустим, у меня есть следующий объект:

{
  A1: {name: "x", age: y},
  B1: {name: "x", age: y},
  C1: {name: "x", age: y},
  D1: {name: "x", age: y},
  A2: {name: "x", age: y},
  B2: {name: "x", age: y},
  C2: {name: "x", age: y},
  D2: {name: "x", age: y},
  A3: {name: "x", age: y},
  B3: {name: "x", age: y},
  C3: {name: "x", age: y},
  D3: {name: "x", age: y},
}

Но мне нужно, чтобы он был таким:

[
  {
    A1: {name: "x", age: y},
    B1: {name: "x", age: y},
    C1: {name: "x", age: y},
    D1: {name: "x", age: y},
  },
  {
    A2: {name: "x", age: y},
    B2: {name: "x", age: y},
    C2: {name: "x", age: y},
    D2: {name: "x", age: y},
  },
  {
    A3: {name: "x", age: y},
    B3: {name: "x", age: y},
    C3: {name: "x", age: y},
    D3: {name: "x", age: y},
  }
]

Я пробовал использовать для циклов и карт, но только что получил застрял, не достигнув желаемого результата

1 Ответ

1 голос
/ 02 мая 2020
  const hash = {};

  for(const [key, value] of Object.entries(input)) {
    const [letter, num] = key;
    if(!hash[num]) hash[num] = {};
    hash[num][key] = value;
  }

  const result = Object.values(hash);
...