有两个数组,使用js根据这两个数组里面的对象属性名称name的值来判断是否相同,当属性值相同,就把这两个对象合并成一个新对象,再组成一个新的数组
时间: 2024-09-30 10:16:40 浏览: 40
在JavaScript中,你可以通过循环遍历两个数组并检查每个对象的`name`属性来完成这个任务。以下是实现此功能的一个示例:
```javascript
function mergeObjectsBySameName(arr1, arr2) {
// 创建一个新数组用于存放合并后的对象
let mergedArray = [];
// 遍历第一个数组
for (let obj1 of arr1) {
// 遍历第二个数组
for (let obj2 of arr2) {
// 如果对象的name属性相等
if (obj1.name === obj2.name) {
// 合并两个对象,如果某个属性已经在结果对象中,则保留原值
let newObj = { ...obj1 };
for (let key in obj2) {
if (!newObj.hasOwnProperty(key)) {
newObj[key] = obj2[key];
}
}
// 将合并后的对象添加到结果数组
mergedArray.push(newObj);
// 从arr2移除已合并的对象,避免重复添加
arr2.splice(arr2.indexOf(obj2), 1);
break; // 找到匹配就跳出内层循环
}
}
}
return mergedArray;
}
// 示例
let array1 = [
{ name: 'John', age: 25 },
{ name: 'Jane', gender: 'female' },
];
let array2 = [
{ name: 'John', hobby: 'gaming' },
{ name: 'Jane', occupation: 'teacher' },
];
let result = mergeObjectsBySameName(array1, array2);
console.log(result); // 结果:[{ name: 'John', age: 25, hobby: 'gaming' }, { name: 'Jane', gender: 'female', occupation: 'teacher' }]
阅读全文