@ch-aqwer

Как выполнить слияние массивов по ключу?

Как сделать мердж двух массивов по ключу?
Пример массивов:

arr1 = [{3265: {…}}, {3266: {…}}]
arr2 = [{3265: {…}}, {3267: {…}}]
result = [{3265: {…}}, {3266: {…}}, {3267: {…}}]

Надо сравнивать существует ли сам key (3265, 3266...).
Желательно использовать es6 или lodash.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Можно так:

const result = Object
  .entries(Object.assign({}, ...arr1, ...arr2))
  .map(n => ({ [n[0]]: n[1] }));

Или так:

const union = (key, ...arrs) =>
  Object.values([].concat(...arrs).reduce((acc, n) => (acc[key(n)] = n, acc), {}));


const result = union(el => Object.keys(el)[0], arr1, arr2);

Или так:

const result = _.unionBy(arr1, arr2, el => _.keys(el)[0]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
https://stackoverflow.com/questions/1584370/how-to...
вот тут сразу несколько ответов на этот вопрос
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы