数组对象如果有相同的对象进行去重
时间: 2023-11-01 16:59:29 浏览: 28
可以使用 Set 数据结构来进行去重。将数组转化为 Set,再将 Set 转化回数组即可。由于 Set 中只会存储不重复的值,所以会自动去除重复的对象。以下是示例代码:
```javascript
// 定义一个包含相同对象的数组
const arr = [{id: 1}, {id: 2}, {id: 1}, {id: 3}, {id: 2}];
// 将数组转化为 Set
const set = new Set(arr);
// 将 Set 转化为数组
const result = Array.from(set);
console.log(result); // [{id: 1}, {id: 2}, {id: 3}]
```
上述代码中,先将数组转化为 Set,再将 Set 转化为数组。最终的 `result` 数组中,只包含了不同的对象,重复的对象被自动去除了。
相关问题
js 相同属性的数组对象 去重
你可以使用 `Array.filter()` 方法和 `Set` 数据结构来实现对具有相同属性的数组对象进行去重。以下是一个示例代码:
```javascript
// 假设arr是包含对象的数组,对象具有相同属性name
const arr = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 },
{ name: 'John', age: 35 },
{ name: 'Jane', age: 40 }
];
// 使用Set和filter去重
const uniqueArr = Array.from(new Set(arr.map(obj => obj.name)))
.map(name => {
return arr.find(obj => obj.name === name);
});
console.log(uniqueArr);
```
在这个例子中,我们首先使用 `map()` 方法将数组中的每个对象的 `name` 属性提取出来并创建一个新的数组。然后,我们使用 `new Set()` 创建一个包含唯一 `name` 值的 Set 对象。最后,我们使用 `Array.from()` 方法将 Set 转换为数组,并使用 `map()` 方法根据 `name` 值查找原始数组中对应的对象。
请注意,这种方法只能去重一个属性,如果需要去重多个属性,可以将多个属性组合成一个唯一的标识。
js 数组对象中两个相同对象去重
在 JavaScript 中,可以使用 `filter` 方法结合 `indexOf` 或者 `includes` 方法来对数组对象中的相同对象进行去重操作。下面是一个示例代码:
```javascript
let array = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Alice' }
];
let uniqueArray = array.filter((item, index) => {
return index === array.findIndex(obj => obj.id === item.id && obj.name === item.name);
});
console.log(uniqueArray);
```
在上述代码中,`filter` 方法会遍历数组中的每个对象。对于每个对象,`indexOf` 或者 `includes` 方法会检查该对象在数组中的第一个索引位置。如果当前索引和第一个索引位置相同,说明该对象是唯一的,将其保留在新的数组 `uniqueArray` 中。
运行上述代码后,输出结果为:
```
[
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Alice' }
]
```
注意,这里的去重逻辑是判断对象的 `id` 和 `name` 属性是否都相等。你可以根据实际需求修改判断条件。