JavaScript使用自定义键合并两个数组可以使用以下几种方法:
方法一:使用reduce()方法
function mergeArraysByKey(arr1, arr2, key) {
return arr1.reduce((result, obj) => {
const foundObj = arr2.find(item => item[key] === obj[key]);
if (foundObj) {
result.push(Object.assign({}, obj, foundObj));
}
return result;
}, []);
}
const array1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }];
const array2 = [{ id: 1, age: 25 }, { id: 2, age: 30 }];
const mergedArray = mergeArraysByKey(array1, array2, 'id');
console.log(mergedArray);
该方法使用reduce()方法迭代arr1数组,并使用find()方法在arr2数组中找到与当前对象具有相同key值的对象。如果找到匹配的对象,则使用Object.assign()方法将两个对象合并,并将合并后的对象推入结果数组中。
方法二:使用map()方法和find()方法
function mergeArraysByKey(arr1, arr2, key) {
return arr1.map(obj => {
const foundObj = arr2.find(item => item[key] === obj[key]);
return foundObj ? { ...obj, ...foundObj } : obj;
});
}
const array1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }];
const array2 = [{ id: 1, age: 25 }, { id: 2, age: 30 }];
const mergedArray = mergeArraysByKey(array1, array2, 'id');
console.log(mergedArray);
该方法使用map()方法遍历arr1数组,并使用find()方法在arr2数组中查找具有相同key值的对象。如果找到匹配的对象,则使用展开运算符(...)将两个对象合并,否则返回原始对象。
方法三:使用forEach()方法和Object.assign()方法
function mergeArraysByKey(arr1, arr2, key) {
const mergedArray = [];
arr1.forEach(obj1 => {
arr2.forEach(obj2 => {
if (obj1[key] === obj2[key]) {
mergedArray.push(Object.assign({}, obj1, obj2));
}
});
});
return mergedArray;
}
const array1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }];
const array2 = [{ id: 1, age: 25 }, { id: 2, age: 30 }];
const mergedArray = mergeArraysByKey(array1, array2, 'id');
console.log(mergedArray);
该方法使用forEach()方法嵌套遍历arr1和arr2数组,并使用Object.assign()方法将具有相同key值的对象合并到结果数组中。
推荐的腾讯云相关产品和产品介绍链接地址:
注意:以上推荐的腾讯云产品仅供参考,具体选择和使用需要根据实际需求进行评估。
领取专属 10元无门槛券
手把手带您无忧上云