js 数组对象,根据id去重
时间: 2024-09-24 15:23:22 浏览: 57
在JavaScript中,如果你有一个数组对象,并想要根据某个键(通常是`id`)去除重复项,你可以使用多种方法。这里给出一种常用的做法,可以结合`filter()`和`indexOf()`函数:
```javascript
function deduplicateById(array, idKey) {
return array.filter(function(item, index, self) {
return self.indexOf({ [idKey]: item[idKey] }) === index;
});
}
// 示例
let arr = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 1, name: 'C' },
{ id: 3, name: 'D' },
];
let uniqueArr = deduplicateById(arr, 'id');
console.log(uniqueArr);
```
这个函数会返回一个新的数组,其中所有的元素都有唯一的`id`值。它通过检查当前元素的`idKey`是否在原数组中的其他位置存在来判断是否重复。
相关问题
用js写一个数组对象根据id去重方法
function uniqueById(arr) {
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[arr[i].id] = arr[i];
}
return Object.values(obj);
}
// 示例
var arr = [
{ id: 1, name: "A" },
{ id: 2, name: "B" },
{ id: 1, name: "C" },
{ id: 3, name: "D" }
];
var result = uniqueById(arr);
console.log(result); // [{id: 1, name: "A"}, {id: 2, name: "B"}, {id: 3, name: "D"}]
js数组对象中如何去重
在JavaScript中,去除数组中的重复对象可以通过多种方法实现。以下是几种常见的方法:
1. **使用Set和Map**:
Set是一种集合数据结构,它只存储唯一的值。结合Map,可以保留对象的引用。
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = Array.from(new Map(array.map(item => [item.id, item])).values());
console.log(uniqueArray); // [{id: 1}, {id: 2}, {id: 3}]
```
2. **使用reduce**:
通过reduce方法遍历数组,并构建一个新的数组来存储唯一的对象。
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = array.reduce((accumulator, current) => {
if (!accumulator.find(item => item.id === current.id)) {
accumulator.push(current);
}
return accumulator;
}, []);
console.log(uniqueArray); // [{id: 1}, {id: 2}, {id: 3}]
```
3. **使用filter和indexOf**:
通过filter方法结合indexOf,可以过滤掉重复的对象。
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = array.filter((item, index, self) => {
return index === self.findIndex(t => t.id === item.id);
});
console.log(uniqueArray); // [{id: 1}, {id: 2}, {id: 3}]
```
这些方法都可以有效地去除数组中的重复对象。选择哪种方法取决于具体的需求和数组的结构。
阅读全文