JavaScript数组去重的两种方法推荐

preview
需积分: 0 0 下载量 142 浏览量 更新于2020-11-29 收藏 34KB PDF 举报
1、数组去重; Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法: 方法一:利用indexOf方法; var aa=[1,3,5,4,3,3,1,4] function arr(arr) { var result=[] for(var i=0; i&lt;arr.length; i++){ if(result.indexOf(arr[i])==-1){ result.push(arr[i]) } } console.log(result) } arr(aa) 方法二: function unique(arr) { v 在JavaScript编程中,数组去重是一项常见的操作,用于去除数组中的重复元素,使得数组只包含唯一的值。在JavaScript中,Array类型本身并没有提供内置的去重方法,因此我们需要自定义函数来实现这一功能。这里推荐两种不同的方法: 方法一:利用`indexOf()`方法 这种方法的基本思路是遍历数组,对每个元素进行检查。如果该元素在新数组`result`中不存在(即`indexOf()`返回值为-1),则将该元素添加到新数组中。这种方法虽然直观,但效率较低,因为每次检查都需要遍历新数组。以下是对这种方法的代码实现: ```javascript var aa = [1, 3, 5, 4, 3, 3, 1, 4]; function arr(arr) { var result = []; for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i]) === -1) { result.push(arr[i]); } } console.log(result); } arr(aa); ``` 方法二:双重循环检查 这种方法通过两层循环实现,外层循环遍历原数组,内层循环检查新数组`result`中是否存在当前元素。如果存在,则跳过此元素;否则,将元素添加到结果数组中。这种方法虽然清晰,但由于需要进行两层循环,效率比方法一更低。以下是代码实现: ```javascript function unique(arr) { var result = [], isRepeated; for (var i = 0, len = arr.length; i < len; i++) { isRepeated = false; for (var j = 0, len = result.length; j < len; j++) { if (arr[i] === result[j]) { isRepeated = true; break; } } if (!isRepeated) { result.push(arr[i]); } } return result; } ``` 方法三:利用哈希表(HashTable) 为了提高效率,可以使用哈希表(在JavaScript中可以使用对象)来存储已经遇到过的元素。这种方法的时间复杂度为O(n),因为哈希表的查找时间复杂度接近常数。以下是改进后的代码: ```javascript function unique(arr) { var result = [], hash = {}; for (var i = 0, elem; (elem = arr[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; } ``` 在这三种方法中,第三种方法利用哈希表提供了最佳的性能。在处理大量数据时,这种方法的优势尤为明显。因此,在实际开发中,我们通常选择使用哈希表来实现数组去重,以保证程序的运行效率。