首页 > 生活百科 >

问 数组去重的5种方法

2025-12-07 22:11:48
最佳答案

答

【数组去重的5种方法】在编程过程中,数组去重是一个常见且重要的操作。根据不同的语言和场景,可以采用多种方式实现数组元素的去重。以下是常见的五种数组去重方法,适用于JavaScript、Python等主流编程语言。

一、方法概述

方法名称 实现原理 是否保留顺序 时间复杂度 是否支持对象类型
使用 Set 利用 Set 数据结构自动去重 是 O(n) 否(仅支持基本类型)
双层循环 遍历数组,逐个比较 是 O(n²) 是(需自定义比较逻辑)
filter + indexOf 利用 filter 和 indexOf 判断重复项 是 O(n²) 是(需自定义比较逻辑)
reduce 通过 reduce 累加不重复元素 是 O(n²) 是(需自定义比较逻辑)
Map 或 Object 利用键值对记录已出现元素 是 O(n) 是(需自定义比较逻辑)

二、详细说明

1. 使用 Set

Set 是 JavaScript 中的一种数据结构,其特点是存储的值都是唯一的。利用 Set 的特性可以直接实现数组去重。

```javascript

const arr = [1, 2, 2, 3, 4, 4];

const uniqueArr = [...new Set(arr)];

```

优点:简洁高效,适合基本类型数组。

2. 双层循环

通过遍历数组,逐个检查当前元素是否已经存在于新数组中,若不存在则添加。

```javascript

function unique(arr) {

const result = [];

for (let i = 0; i < arr.length; i++) {

if (!result.includes(arr[i])) {

result.push(arr[i]);

}

}

return result;

}

```

优点:兼容性强,可处理对象类型。

3. filter + indexOf

使用 filter 方法结合 indexOf 来判断元素是否重复。

```javascript

const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);

```

优点:代码简洁,逻辑清晰。

4. reduce

通过 reduce 累加器来收集不重复的元素。

```javascript

const uniqueArr = arr.reduce((acc, item) => {

if (!acc.includes(item)) acc.push(item);

return acc;

}, []);

```

优点:函数式风格,便于链式调用。

5. Map 或 Object

利用对象的键唯一性来记录已出现的元素。

```javascript

const uniqueArr = [];

const seen = {};

for (let i = 0; i < arr.length; i++) {

const key = JSON.stringify(arr[i]);

if (!seen[key]) {

seen[key] = true;

uniqueArr.push(arr[i]);

}

}

```

优点:支持对象类型的去重,灵活性高。

三、总结

数组去重是编程中的基础操作,选择合适的方法能提升代码效率与可读性。对于简单数据类型,推荐使用 `Set`;对于复杂数据类型或需要自定义比较逻辑的情况,建议使用双层循环、reduce 或 Map 方式。每种方法都有其适用场景,合理选择才能达到最佳效果。

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。