2022-10-08 14:25:00
JavaScript数组去重有以下几种常见方法:
遍历数组法
利用indexOf()方法判断元素是否已存在于新数组中。具体步骤为:创建空数组newArr,遍历原数组arr,若newArr.indexOf(arr[i]) === -1(即未找到重复元素),则将arr[i]推入newArr。此方法简单直观,但时间复杂度为O(n²),适用于小规模数据。
数组下标判断法
通过比较元素首次出现的索引与当前索引实现去重。遍历数组时,若arr.indexOf(arr[i]) === i(即当前元素为首次出现),则将其推入新数组。此方法利用了indexOf()返回首个匹配索引的特性,重复元素会被跳过,时间复杂度同样为O(n²)。
排序后相邻去除法
先对数组排序(sort()),使重复元素相邻,再遍历比较相邻元素。初始化新数组为[arr[0]],从第二个元素开始遍历,若当前元素与新数组末尾元素不等,则推入新数组。此方法时间复杂度为O(n log n)(排序主导),但会改变原数组顺序。
优化的遍历数组法
采用双重循环:外层循环遍历原数组,内层循环从当前元素开始向后比较。若未发现重复,则将当前元素推入新数组;若发现重复,则跳过后续比较。此方法通过提前终止内层循环优化性能,但仍为O(n²)时间复杂度。
数组遍历法(状态变量控制)
使用双重循环与状态变量bl控制去重。外层循环遍历原数组,内层循环遍历新数组,若新数组中不存在当前元素(bl保持true),则推入新数组;若存在(bl置为false),则跳过。此方法逻辑清晰,但效率与前两种双重循环方法相当。
其他高效方法补充
选择建议: