用JS写一个对象数组去重的函数
时间: 2023-03-14 19:46:27 浏览: 20
您可以使用以下代码来实现去重:
```
function removeDuplicates(array) {
return array.filter((item, index) => array.indexOf(item) === index);
}
```
这个函数使用 JavaScript 的 `filter` 函数,只返回数组中第一次出现的元素。 它使用 `indexOf` 函数找到每个元素第一次出现的位置,然后只保留该位置与当前元素索引相同的元素。
但是,如果数组中的元素是对象,则必须使用另一种方法,例如使用 Set 和 Map。
```
function removeDuplicates(array) {
const seen = new Map();
return array.filter(item => {
const key = JSON.stringify(item);
if (!seen.has(key)) {
seen.set(key, true);
return true;
}
return false;
});
}
```
这个函数使用了 JavaScript 的 Map 对象,以字符串形式存储对象,并使用 `has` 方法检查是否已经存在该元素。 如果不存在,它将该元素添加到 Map 并返回 true,否则返回 false。
相关问题
帮我写个js的数组去重函数
当然可以,以下是一个简单的js数组去重函数:
function unique(arr) {
return Array.from(new Set(arr));
}
这个函数使用ES6的Set数据结构来去除重复项,然后将结果转换为数组返回。
使用JS写一个对象数组去重的函数
您可以使用 JavaScript 实现一个去重函数,方法如下:
1. 使用 Set 对象:在 JavaScript 中,Set 对象具有去重功能,您可以将原始数组转换为 Set 对象,再将其转回数组,即可得到一个去重后的数组。
```
function removeDuplicates(arr) {
return Array.from(new Set(arr));
}
```
2. 使用 filter() 函数:您可以使用 filter() 函数过滤掉重复的元素,该函数接收一个函数作为参数,该函数用于判断元素是否应该保留在数组中。
```
function removeDuplicates(arr) {
return arr.filter((item, index) => arr.indexOf(item) === index);
}
```
如果您的对象数组中的对象具有独特的键值,则可以使用以下代码进行去重:
```
function removeDuplicates(arr) {
let seen = new Set();
return arr.filter(obj => {
let key = JSON.stringify(obj);
return seen.has(key) ? false : seen.add(key);
});
}
```
阅读全文