js 数组对象,根据id去重
时间: 2024-09-24 15:23:22 浏览: 47
在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"}]
vue 两个数组对象根据参数去重
假设有两个数组对象,如下所示:
```javascript
let arr1 = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'baz' },
{ id: 4, name: 'qux' }
]
let arr2 = [
{ id: 2, name: 'bar' },
{ id: 4, name: 'qux' },
{ id: 5, name: 'quux' }
]
```
可以使用 `filter()` 和 `some()` 方法来实现根据 `id` 去重,代码如下:
```javascript
let result = arr1.concat(arr2).filter((item, index, arr) => {
return !index || item.id !== arr[index-1].id
})
console.log(result)
```
输出结果为:
```javascript
[
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'baz' },
{ id: 4, name: 'qux' },
{ id: 5, name: 'quux' }
]
```
其中,`concat()` 方法用于合并两个数组,`filter()` 方法用于过滤重复的数组对象。在 `filter()` 方法中,使用 `some()` 方法判断当前元素是否与前一个元素的 `id` 相同,如果相同则过滤,否则保留。
阅读全文