Объедините 2 массива объектов и сохраните значение в массиве

#javascript #node.js #arrays #merge

Вопрос:

Давайте рассмотрим пример.

   const arr1 = [  {  algo: [  { key: 'c', value: 1 },  { key: 'java', value: 2 },  ],  base: [  { key: 'js', value: 3 },  { key: 'python', value: 4 },  ],  },  {  algo: [  { key: 'c', value: 10 },  { key: 'java', value: 20 },  ],  base: [  { key: 'js', value: 30 },  { key: 'python', value: 40 },  ],  }, ]     

Мне нужно объединить эти 2 массива объектов и создать следующий массив:

Информация: Я хочу объединить значение в массиве строковых/int значений информация: Я могу использовать lodash

 const results = [  {  algo: [  { key: 'c', value: [1, 10] },  { key: 'java', value: [2, 20] },  ],  base: [  { key: 'js', value: [3, 30] },  { key: 'python', value: [4, 40] },  ],  }, ]  

Комментарии:

1. Пожалуйста, добавьте сюда также свое решение или то, что вы пытались получить, чтобы получить желаемый результат.

2. Я уже пробовал функции _.merge и reduce

Ответ №1:

Решение

 const customMerge = (objValue, srcValue) =gt; {  return { key: objValue.key, value: [objValue.value, srcValue.value] } } const mergeAttributes = array =gt; {   return array.reduce((acc, curr) =gt; {  if (Object.keys(acc).length === 0) {  acc = curr  } else {  Object.keys(curr).forEach(key =gt;  acc[key] = _.mergeWith(acc[key],curr[key],customMerge)  )  }  return acc  }, {}) }