判断一个数组中有没有相同的对象
时间: 2023-07-25 20:05:10 浏览: 98
要判断一个数组中是否有相同的对象,需要先确定“相同”的定义。如果我们认为两个对象的所有属性都相等,则它们是相同的。可以使用循环遍历数组中的每个对象,然后再遍历数组中剩余的对象,将它们与当前对象进行比较。如果发现有对象的所有属性都相等,则说明数组中存在相同的对象。
以下是一个示例代码:
```javascript
function hasDuplicate(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (isEqual(arr[i], arr[j])) {
return true;
}
}
}
return false;
}
function isEqual(obj1, obj2) {
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
}
for (let key in obj1) {
if (obj1[key] !== obj2[key]) {
return false;
}
}
return true;
}
// 示例
const arr = [
{ name: '张三', age: 18 },
{ name: '李四', age: 20 },
{ name: '张三', age: 18 },
{ name: '王五', age: 22 },
];
console.log(hasDuplicate(arr)); // true
```
在上面的代码中,`hasDuplicate` 函数用来判断数组中是否有相同的对象。它通过两层循环遍历数组中的每个对象,并调用 `isEqual` 函数来判断两个对象是否相同。`isEqual` 函数用来比较两个对象的所有属性是否相等。如果两个对象的属性不相同,则返回 `false`,否则返回 `true`。如果在数组中找到了相同的对象,则 `hasDuplicate` 函数返回 `true`,否则返回 `false`。
阅读全文