(Объединить / Объединить / Объединить) несколько массивов объектов, объединенных ключом.
Обновить , также можно сделать это объединение во время выполнения для более одного массива. вам просто нужно определить первичную матрицу и создать фильтр на матрице матриц, следуйте этому примеру в.
Я надеюсь, что этот пример поможет, он отлично сработал, для приведенных вами примеров просто отредактируйте пример ниже и вы увидите результат, я даже пошутил, выполняя слияние всего, и это сработало правильно. Помня, что он всегда будет рассматривать первичную матрицу как основу.
"use strict";
const arrCustomer1 = [
{ id: 1, name: "a" },
{ id: 2, name: "b" }
];
const arrCustomerDetail1 = [
{ id: 1, location: "jupiter", group: "C" },
{ id: 2, location: "mars", group: "D" }
];
const wantedArray1 = [
{ id: 1, name: "a", location: "jupiter", group: "C" },
{ id: 2, name: "b", location: "mars", group: "D" }
];
const arrCustomer2 = [
{ id: 1, name: "a" },
{ id: 2, name: "b" },
{ id: 3, name: "c" }
];
const arrCustomerDetail2 = [
{ id: 1, location: "jupiter", group: "C" },
{ id: 2, location: "mars", group: "D" }
];
const wantedArray2 = [
{ id: 1, name: "a", location: "jupiter", group: "C" },
{ id: 2, name: "b", location: "mars", group: "D" },
{ id: 3, name: "c" } //or blanks for the other fields location group
];
const arrCustomer3 = [
{ id: 1, name: "a" },
{ id: 2, name: "b" },
{ id: 3, name: "c" }
];
const arrCustomerDetail3 = [
{ id: 1, location: "jupiter", group: "C" },
{ id: 1, location: "venus", group: "G" },
{ id: 2, location: "mars", group: "D" }
];
const wantedArray3 = [
{ id: 1, name: "a", location: "jupiter", group: "C" },
{ id: 1, name: "a", location: "venus", group: "G" },
{ id: 2, name: "b", location: "mars", group: "D" },
{ id: 3, name: "c" } //or blanks for the other fields location group
];
const combinedArrays = [arrCustomerDetail1,
wantedArray1,
arrCustomer2,
arrCustomerDetail2,
wantedArray2,
arrCustomer3,
arrCustomerDetail3,
wantedArray3];
function joinArrByKey(primaryArr, combinedArrays, key) {
return primaryArr.map((eArr1) => {
const filter = new Array().concat.apply([], combinedArrays).filter((eArr2) => eArr2.id === eArr1[key]);
return filter.length ? Object.assign({}, eArr1, ...filter) : eArr1;
});
}
console.log(joinArrByKey(arrCustomer1, combinedArrays, 'id'));
console.log(joinArrByKey(arrCustomer2, combinedArrays, 'id'));
console.log(joinArrByKey(arrCustomer3, combinedArrays, 'id'));
(Объединить / Объединить / Объединить) Только для двух массивов по идентификатору ключа, быстрее.
вы можете создать свою собственную функцию вот так и поделитесь им со всеми приложениями вместо _loda sh.
"use strict";
const arr1 = [
{ id: 1, name: "a" },
{ id: 2, name: "b" },
];
const arr2 = [
{ id: 1, price: 10 },
{ id: 2, price: 20 },
];
function joinArrById(primaryArr, secondArray) {
return primaryArr.map((eArr1) => {
const find = secondArray.find((eArr2) => eArr2.id === eArr1.id);
return find ? Object.assign(Object.assign({}, eArr1), find) : eArr1;
});
}
console.log(joinArrById(arr1, arr2));
Если вышеприведенное решение вам не подходит, используйте _loda sh.
import * as _ from "lodash";
const arr1 = [
{ id: 1, name: "a" },
{ id: 2, name: "b" },
];
const arr2 = [
{ id: 1, price: 10 },
{ id: 2, price: 20 },
];
var arrJoin = _.map(arr1, (obj: { id: number }) => {
return _.assign(
obj,
_.find(arr2, {
id: obj.id,
})
);
});
console.log(arrJoin);