js复杂数据类型去重
时间: 2023-10-11 14:04:37 浏览: 52
在JavaScript中,可以使用多种方法对复杂数据类型进行去重。以下是几种常用的方法:
1. 使用循环和splice方法。该方法通过两层循环对数组元素进行逐一比较,然后使用splice方法来删除重复的元素。这种方法对于NaN无法进行去重,因为NaN !== NaN。示例代码如下:
```javascript
function removeDuplicate(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (arr[i === arr[j]) {
arr.splice(j, 1);
len--; // 减少循环次数提高性能
j--; // 保证j的值自加后不变
}
}
}
return arr;
}
const result = removeDuplicate(arr);
console.log(result); // [ 1, 2, 'abc', true, false, undefined, NaN, NaN ]
```
2. 使用对象属性名的不可重复性。该方法利用了对象的属性名不可重复这一特性,通过遍历数组,将元素作为对象的属性名,并使用一个新数组来保存非重复的元素。示例代码如下:
```javascript
function removeDuplicate(arr) {
const newArr = [];
const obj = {}; arr.forEach(item => {
if (!obj[item]) {
newArr.push(item);
obj[item = true;
}
});
return newArr;
}
const result = removeDuplicate(arr);
console.log(result); // [ 1, 2, 'abc', true, false, undefined, NaN ]
```
3. 使用Set数据结构。Set是JavaScript中的一种数据结构,可以存储不重复的值。通过将复杂数据类型转换为字符串进行比较,可以实现对复杂数据类型的去重。示例代码如下:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
const uniqueArr = [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item));
console.log(uniqueArr); // [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
```
这些方法可以根据具体的需求选择使用,根据不同的数据类型和数据结构进行去重操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [js实现数组去重的方式(7种)](https://blog.csdn.net/qq_52732369/article/details/121877897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [js复杂数组去重](https://blog.csdn.net/Dimples_320/article/details/129317463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]