js去重数组中相同id的对象
时间: 2023-10-17 16:07:06 浏览: 73
可以通过遍历数组,利用一个对象来存储已经出现过的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。最后,如果该元素不存在,则将其添加到新数组中。最后,返回新数组即可。
该方法可以很好地去除数组中对象相同的值,并返回一个去重后的新数组。
vue,js:去重 数组中数组属性值一样的去重
在Vue.js中,如果你想要对数组进行去重操作,并且基于某个数组元素的属性值来进行判断,可以使用JavaScript的map()、filter()和reduce()函数结合。这里有一个简单的示例:
```javascript
let arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'John' },
{ id: 3, name: 'Jane' },
{ id: 4, name: 'Jane' }
];
// 定义要去重的属性名
const keyToUnique = 'name';
// 使用filter()和reduce()去重
let uniqueArr = arr.filter((item, index, self) => {
return self.findIndex(i => i[keyToUnique] === item[keyToUnique]) === index;
});
console.log(uniqueArr);
```
在这个例子中,我们首先选择了`keyToUnique`属性作为去重依据,然后使用filter()过滤出每个元素第一次出现的情况,reduce()则用于迭代整个数组并返回结果。
阅读全文