js去重数组中相同id的对象
时间: 2023-10-17 17:07:06 浏览: 31
可以通过遍历数组,利用一个对象来存储已经出现过的id,然后将未出现过的对象放入一个新的数组中实现去重。
示例代码如下:
```javascript
const arr = [
{id: 1, name: 'Alice'},
{id: 2, name: 'Bob'},
{id: 1, name: 'Charlie'},
{id: 3, name: 'David'},
{id: 2, name: 'Eva'}
];
const uniqueArr = [];
const idSet = {};
for (let i = 0; i < arr.length; i++) {
const obj = arr[i];
if (!idSet[obj.id]) {
idSet[obj.id] = true;
uniqueArr.push(obj);
}
}
console.log(uniqueArr);
// Output: [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'David'}]
```
在上面的代码中,我们定义了一个 `uniqueArr` 数组来存储去重后的结果,同时通过一个 `idSet` 对象来记录已经出现过的id。在遍历数组时,我们先判断当前对象的id是否已经出现过,如果没有,则将其加入 `uniqueArr` 数组,并在 `idSet` 中记录该id已经出现过。最终返回 `uniqueArr` 即可。
相关问题
js去重数组中对象相同的值
在JavaScript中,可以使用reduce()和findIndex()方法来去除数组中对象相同的值。首先,通过reduce()方法遍历整个数组,将每个对象的属性值合并为一个字符串,然后使用findIndex()方法在新数组中查找是否已经存在相同字符串。如果没有找到,则将该字符串添加到新数组中,否则忽略该对象。
以下是一个示例代码:
```
const arr = [{ id: 1, name: 'apple' }, { id: 2, name: 'banana' }, { id: 1, name: 'apple' }];
const result = arr.reduce((acc, cur) => {
const stringified = JSON.stringify(cur); // 将对象转换为字符串
const exists = acc.findIndex(item => JSON.stringify(item) === stringified); // 判断是否已存在
if (exists === -1) {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [{ id: 1, name: 'apple' }, { id: 2, name: 'banana' }]
```
在上面的代码中,我们使用JSON.stringify()将每个对象转换为字符串,以便后续比较。然后使用findIndex()方法,在新数组中查找是否已包含相同的字符串。如果已经存在相同的字符串,则返回该元素所在的位置,否则返回-1。最后,如果该元素不存在,则将其添加到新数组中。最后,返回新数组即可。
该方法可以很好地去除数组中对象相同的值,并返回一个去重后的新数组。
前端如何去重数组对象
前端去重数组对象可以通过以下几种方法实现:
1. 使用Set数据结构:将数组转成Set集合,再将Set集合转回数组即可去重。需要注意的是,Set中比较对象是否相等是根据对象的引用地址进行比较的,因此需要重写对象的equals方法来比较对象的属性值是否相等。
2. 使用reduce函数:利用reduce函数遍历数组,将每个元素添加到结果数组中,如果结果数组中已经存在相同的元素,则不添加。
3. 使用filter函数:使用filter函数遍历数组,对每个元素使用findIndex函数查找是否已经存在相同元素,如果不存在则返回该元素。
下面是一个使用Set数据结构去重的例子:
```javascript
const arr = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 1, name: 'Tom'}];
const result = Array.from(new Set(arr.map(item => JSON.stringify(item)))).map(item => JSON.parse(item));
console.log(result); // [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}]
```
这里使用了JSON.stringify和JSON.parse方法将对象转成字符串再转回对象,以便使用Set集合去重。