JS怎么判断两个对象的属性和属性值是否相同,写出来
时间: 2024-06-03 19:10:04 浏览: 78
使用深度比较的方法可以判断两个对象的属性和属性值是否相同,具体实现代码如下:
function deepEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
} else if (typeof obj1 == "object" && obj1 != null && typeof obj2 == "object" && obj2 != null) {
if (Object.keys(obj1).length != Object.keys(obj2).length) return false;
for (let prop in obj1) {
if (obj2.hasOwnProperty(prop)) {
if (!deepEqual(obj1[prop], obj2[prop])) return false;
} else return false;
}
return true;
} else return false;
}
使用deepEqual函数即可判断两个对象的属性和属性值是否相同。
相关问题
有两个数组,使用js根据这两个数组里面的对象属性名称name值判断是否相同,当name属性值相同,就把这两个对象合并成一个新对象,再组成一个新的数组
在JavaScript中,你可以通过遍历两个数组并比较每个对象的`name`属性来实现这个功能。以下是一个简单的示例:
```javascript
function mergeObjectsByName(array1, array2) {
let newArray = [];
// 遍历第一个数组
for (let obj1 of array1) {
// 查找第二个数组是否有相同的name
let foundObj2 = array2.find(obj2 => obj2.name === obj1.name);
if (foundObj2) {
// 如果找到,合并两个对象
let mergedObj = { ...obj1, ...foundObj2 };
newArray.push(mergedObj);
} else {
// 如果没找到,直接添加原对象到新数组
newArray.push(obj1);
}
}
// 遍历第二个数组剩余部分,并直接添加
for (let obj2 of array2) {
if (!newArray.some(obj => obj.name === obj2.name)) {
newArray.push(obj2);
}
}
return newArray;
}
// 示例数据
const array1 = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }];
const array2 = [{ name: 'John', city: 'New York' }, { name: 'Peter', age: 40 }];
// 使用函数合并并创建新的数组
const result = mergeObjectsByName(array1, array2);
console.log(result);
// 结果可能是:[{ name: 'John', age: 30, city: 'New York' }, { name: 'Jane', age: 25 }, { name: 'Peter', age: 40 }]
有两个数组,使用js根据这两个数组里面的对象属性名称name的值来判断是否相同,当属性值相同,就把这两个对象合并成一个新对象,再组成一个新的数组
在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' }]
阅读全文