js数组对象去除相同id
时间: 2023-07-22 17:19:30 浏览: 47
可以使用reduce和filter方法来去除相同id的数组对象,具体实现如下:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Charlie' },
{ id: 3, name: 'David' },
{ id: 2, name: 'Eve' },
];
const uniqueArr = arr.reduce((acc, cur) => {
const isExist = acc.find(item => item.id === cur.id);
if (!isExist) {
acc.push(cur);
}
return acc;
}, []);
console.log(uniqueArr);
// Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'David' }]
```
在reduce方法的回调函数中,使用find方法查找当前元素是否在累加器中已经存在,如果不存在,则将当前元素push到累加器中,最后返回累加器即可。
相关问题
vue js两个数组对象去除相同
可以使用`filter`和`some`方法来从第一个数组中去除与第二个数组重复的元素,例如:
```javascript
let arr1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Anna' }, { id: 3, name: 'Bob' }];
let arr2 = [{ id: 2, name: 'Anna' }, { id: 4, name: 'Mike' }];
let newArr = arr1.filter(item1 => !arr2.some(item2 => item1.id === item2.id));
console.log(newArr); // [{ id: 1, name: 'John' }, { id: 3, name: 'Bob' }]
```
这段代码首先使用`filter`方法过滤掉第一个数组中与第二个数组重复的元素,并返回一个新数组。`filter`方法中传入的箭头函数接收一个参数`item1`,表示正在遍历的第一个数组的元素。在箭头函数中,使用了`some`方法来检查第二个数组中是否存在一个元素`item2`,它的`id`与当前遍历的`item1`的`id`相同。如果存在相同的元素,`some`方法返回`true`,此时箭头函数返回`false`,表示要过滤掉`item1`。如果第二个数组中不存在相同的元素,`some`方法返回`false`,此时箭头函数返回`true`,表示要保留`item1`。最终,`filter`方法会返回一个新数组,该数组中只包含第一个数组中不与第二个数组重复的元素。
数组对象去除相同的属性名
你好!关于你的问题,可以使用 JavaScript 的 Set 数据结构和数组的 filter 方法来实现,具体操作如下:
```javascript
// 定义一个数组对象
const arr = [
{ id: 1, name: 'Tom', age: 20 },
{ id: 2, name: 'Jerry', age: 22 },
{ id: 3, name: 'Tom', gender: 'male' }
];
// 取出所有属性名
const keys = Array.from(new Set(arr.flatMap(obj => Object.keys(obj))));
// 去除相同属性名
const res = arr.map(obj =>
keys.reduce((acc, key) => {
if (obj.hasOwnProperty(key)) {
acc[key] = obj[key];
}
return acc;
}, {})
);
// 输出结果
console.log(res);
```
以上代码中,我们首先使用 Set 数据结构取出数组对象中所有属性名,并通过 flatMap 方法将它们打平为一个一维数组。然后使用 reduce 方法遍历数组对象,只取出原始对象中存在的属性名,最终返回一个新的对象数组。