Javascript: сгладить каждый элемент массива, содержащий вложенный объект

Мне нужно сгладить массив, где каждый элемент содержит вложенный объект, как показано ниже:

[
  {
    a: "x",
    b: { b1: "x1", b2: "x2"}
  },
  {
    a: "y",
    b: { b1: "y1", b2: "y2"}
  }
]

to

[
  {
    a: "x",
    b1: "x1", 
    b2: "x2"
  },
  {
    a: "y",
    b1: "y1",
    b2: "y2"
  }
]

Это наиболее близко к тому, что я ищу https://stackoverflow.com/a/33037683/4217097 Однако , я не уверен, как использовать это решение для массива, так как оно возвращает только последний элемент массива, когда я пытался его применить.


person threezerothree    schedule 29.05.2020    source источник
comment
Добро пожаловать в Stack Overflow! Пройдите тур (вы получите значок!) и прочитайте справочный центр, в частности Как задать хороший вопрос? Лучше всего здесь проведите свое исследование, ищите связанные темы на SO и попробуйте. Если вы застряли и не можете оторваться после дополнительных исследований и поиска, опубликуйте минимально воспроизводимый пример вашей попытки и указать конкретно, где вы застряли. Люди будут рады помочь.   -  person T.J. Crowder    schedule 29.05.2020
comment
Создайте эту функцию и вызовите const newArray = yourArray.map(flattenObject)   -  person adiga    schedule 29.05.2020


Ответы (1)


Вы можете сделать что-то вроде:

const source = [
  {
    a: "x",
    b: { b1: "x1", b2: "x2"}
  },
  {
    a: "y",
    b: { b1: "y1", b2: "y2"}
  }
]

const transformed = source.map(item => ({ ...item.b, a: item.a }));

console.log(transformed)

Сопоставьте свой источник с новым объектом, захватив a и распространив на него b.

person RestOfTheBothWorlds    schedule 29.05.2020
comment
Просто и идеально! Спасибо - person threezerothree; 29.05.2020