Массив Merge 2 сохраняет старое значение и расширяет его новым, а также масштабирует при необходимости - PullRequest
0 голосов
/ 21 мая 2018

У меня есть этот объект

array1=[0:{
 title:"title",
  notes:[
   0:{body:"text"}
   1:{body:"text"}
   2:{body:"some other text"}
  ]
}]

array2=[0:{
 title:"title",
  notes:[
   0:{body:"text"}
   1:{body:"text sfhhda"}
  ]
}]

, и мне нужно объединить, чтобы получить такой вывод

console.log (merge (array1, array2)) =>

[0:
 {title:"title",
  notes:[
   0:{body:"text"}
   1:{body:"text text sfhhda"}
   2:{body:"some other text"}
  ]
}]

существует ли какой-либо метод для этого?

1 Ответ

0 голосов
/ 21 мая 2018

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

const array1=[{title:"title",notes:[{body:"text"},{body:"text"},{body:"some other text"}]}]
const array2=[{title:"title",notes:[{body:"text"},{body:"text sfhhda"}]}]

const notesMap = [...array1[0].notes, ...array2[0].notes]
  .reduce((a, obj) => (
    a.set(JSON.stringify(obj), obj)
  ), new Map());

const output = [{
  title: 'title',
  notes: [...notesMap.values()]
}];
console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...