js去重不同id的对象
时间: 2023-09-30 18:08:59 浏览: 47
可以使用Set和Array.from方法来实现去重不同id的对象。
例如,假设有以下对象数组:
```
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'David' },
{ id: 1, name: 'Eve' }
];
```
我们可以使用Set和Array.from方法来去重不同id的对象:
```
const uniqueArr = Array.from(new Set(arr.map(item => item.id)))
.map(id => arr.find(item => item.id === id));
```
首先,我们使用map方法将原数组中的每个对象的id属性提取出来,然后使用new Set方法创建一个去重后的id集合。接着,我们再使用Array.from方法将集合转换回数组形式。最后,我们使用map方法遍历去重后的id数组,找到原数组中第一个id属性等于当前id的对象,并将其作为结果数组的一个元素返回。这样,我们就得到了一个去重后的对象数组,其中每个元素都是唯一的id对应的第一个对象。
相关问题
js去重数组中相同id的对象
可以通过遍历数组,利用一个对象来存储已经出现过的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 数组对象根据id去重
JS 数组对象根据id去重可以通过以下方法实现:
1. 遍历数组,将每个对象的id作为键,对象本身作为值存入一个新的对象中,这样就可以去重了。
2. 将新对象中的值转换为数组即可。
以下是代码实现:
引用:
```
function deduplicate(arr) {
const map = {};
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (!map[item.id]) {
map[item.id] = item;
}
}
return Object.values(map);
}
console.log(this.deduplicate(arr)) //['1', '2', '3', '5', '4']
```
引用:
```
const arr = [
{ id: 1, name: "数据1" },
{ id: 1, name: "数据2" },
{ id: 2, name: "数据3" },
{ id: 3, name: "数据4" },
{ id: 4, name: "数据5" },
{ id: 3, name: "数据6" },
{ id: 5, name: "数据7" }
];
function deduplicate(arr) {
const map = {};
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (!map[item.id]) {
map[item.id] = item;
}
}
return Object.values(map);
}
console.log(deduplicate(arr));
```
引用:
```
const arr = ["1", "1", "2", "3", "5", "3", "1", "5", "4"];
function deduplicate(arr) {
const map = {};
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (!map[item]) {
map[item] = item;
}
}
return Object.values(map);
}
console.log(deduplicate(arr));
```