Свести объект дочерних массивов - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть объект, который выглядит как

list:{
    dynamicPerson: [
        0: {
            name:"Andrew", 
            company:"xCompany"
        }, 
        1: {
            name:"Joseph",
            company:"zCompany"
        }
    ] 
    dynamicPerson2: [
        0: {
            name:"Andrew", 
            company:"xCompany"
        }, 
        1: {
            name:"Joseph", 
            company:"zCompany"
        }
    ]
}

Я хочу его как

List:[
    0: {
        name:"Andrew",
        company:"xCompany"
    },
    1: {
        name:"Joseph", 
        company:"zCompany"
    },
    2: {
        name:"Andrew", 
        company:"xCompany"
    },
    3: {
        name:"Joseph", 
        company:"zCompany"
    }
]

Примечание. DynamicPerson - это ключ, генерируемый во время выполнения.

Ответы [ 4 ]

4 голосов
/ 13 февраля 2020

Вы можете перебирать ключи объекта. Сопоставьте массивы с массивом массивов, а затем сгладьте его.

let flattened = Object.keys(list).map(key => list[key]).flat();

Я немного изменил ваш ввод, поскольку он не был синтаксически правильным.

  let list = {
    dynamicPerson: [
      {
        name: "Andrew",
        company: "xCompany"
      },
      {
        name: "Joseph",
        company: "zCompany"
      }
    ],
    dynamicPerson2: [
      {
        name: "Andrew",
        company: "xCompany"
      },
      {
        name: "Joseph",
        company: "zCompany"
      }
    ]
  };

  let flattened = Object.keys(list)
    .map(key => list[key])
    .flat();

  console.log(flattened);
0 голосов
/ 13 февраля 2020

Вы также можете использовать Object.values ​​() и flat :

let list = {
  dynamicPerson: [{
      name: "Andrew",
      company: "xCompany"
    },
    {
      name: "Joseph",
      company: "zCompany"
    }
  ],
  dynamicPerson2: [{
      name: "Andrew",
      company: "xCompany"
    },
    {
      name: "Joseph",
      company: "zCompany"
    }
  ]
}
let List = Object.values(list).flat();
console.log(List);
0 голосов
/ 13 февраля 2020

Вы можете использовать flatMap():

Object.values(list).flatMap(s => s);

Пример:

let list ={
    dynamicPerson: [
        {
            name:"Andrew",
            company:"xCompany"
        },
        {
            name:"Joseph",
            company:"zCompany"
        }
    ]
,   dynamicPerson2: [
        {
            name:"Andrew",
            company:"xCompany"
        },
        {
            name:"Joseph",
            company:"zCompany"
        }
    ]
}

const result = Object.values(list).flatMap(s => s);
console.log(result);
0 голосов
/ 13 февраля 2020

Вы найдете это сами, ища: преобразовать объект в пары массив-ключ-значение-значение

Но, возможно, посмотрите на приведенное здесь: как конвертировать-ан пары-объект-массив-ключ-значение могут помочь вам

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