@kikosko

Как объединить два массива в один?

// Первый массив
const defaultTest = {
    main: "first1",
    references: [
        { something: "something1" },
        { something: "something2" },
    ]
}

// Второй массив
const systemTest = {
    main: "first2",
    references: [
        { something: "something11" },
        { something: "something22" },
    ]
}

// То что я хочу получить на выходе 
const test = [
    { something: "something1", main: "first1", defaultTest: true },
    { something: "something2", main: "first1", defaultTest: true },
    { something: "something11", main: "first2", systemTest: true },
    { something: "something22", main: "first2", systemTest: true },
]
  • Вопрос задан
  • 260 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Так чего надо-то? Говорите "массивы", показываете объекты.

Если исходные данные, как и показано, представлены объектами, то

Object
  .entries({ defaultTest, systemTest })
  .flatMap(([ k, { references, ...n } ]) => references.map(m => ({
    ...m,
    ...n,
    [k]: true,
  })))

Если же это массивы (а сейчас показываются, соответственно, их элементы), тогда

Object
  .entries({ defaultTest, systemTest })
  .map(([ k, v ]) => v.map(({ references, ...n }) => references.map(m => ({
    ...m,
    ...n,
    [k]: true,
  }))))
  .flat(2)
Ответ написан
Комментировать
mmmaaak
@mmmaaak
const test = [
  ...defaultTest.references.map(({ something }) => ({ something, main: defaultTest.main, defaultTest: true })),
  ...systemTest.references.map(({ something }) => ({ something, main: systemTest.main, systemTest: true })),
];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы