JavaScript 数组去除重复数字的方法

0 下载量 148 浏览量 更新于2024-08-30 收藏 29KB PDF 举报
"这篇文章主要介绍了如何使用JavaScript去除数字数组中的重复项,提供的代码示例需要注意在IE浏览器中可能无法正常工作,建议在火狐或其他现代浏览器中测试。" 在JavaScript中,处理数组并去除其中的重复元素是一项常见的任务。本文通过提供三种不同的实现方法来解决这个问题,针对的是数字数组,但基本思路可以应用于任何类型的数组。 首先,我们来看第一种方法(unique1): ```javascript Array.prototype.unique1 = function() { var r = new Array(); label: for (var i = 0, n = this.length; i < n; i++) { for (var x = 0, y = r.length; x < y; x++) { if (r[x] == this[i]) { continue label; } } r[r.length] = this[i]; } return r; } ``` 这个方法创建了一个新的空数组`r`,然后遍历原数组。对于原数组中的每个元素,它会检查是否已经在新数组`r`中出现过。如果已经存在,则跳过此元素;否则,将元素添加到新数组。这种方法使用了`for`循环和`continue`语句,效率相对较低,因为需要进行两次遍历。 接下来是第二种方法(unique2): ```javascript Array.prototype.unique2 = function() { return this.sort().join(',').replace(/(,|^)([^,]+)(,,\2)+(,|$)/g, '$1$2$4').replace(/,,+/g, ',').replace(/,$/, '').split(','); } ``` 这种方法首先对数组进行排序,然后将数组转换为一个由逗号分隔的字符串。接着,使用正则表达式替换重复的项,最后将结果字符串再次分割回数组。这种方法利用了字符串处理,但需要注意排序可能改变数组原有的顺序。 最后是第三种方法(unique3): ```javascript Array.prototype.unique3 = function() { var temp = {}, len = this.length; for (var i = 0; i < len; i++) { temp[this[i]] = true; } return Object.keys(temp); } ``` 这种方法使用了一个临时对象`temp`来存储数组中的唯一值。对于数组中的每个元素,将其作为键存入`temp`对象。由于对象的键是唯一的,这有效地去除了重复。最后,通过`Object.keys(temp)`获取所有键并返回,形成新的无重复元素的数组。这种方法在处理大型数组时效率较高,因为它只遍历一次数组。 需要注意的是,这些方法在不同浏览器中的兼容性可能会有所不同。例如,`console.log`在旧版IE浏览器中不受支持,因此文章中提到的代码可能需要进行调整,如在IE中使用`alert`代替。此外,由于JavaScript的原型链操作,直接修改`Array.prototype`可能会影响其他库或代码的行为,所以在生产环境中应谨慎使用。 总结来说,去除JavaScript数组中的重复元素有多种策略,可以根据实际需求和性能考虑选择合适的方法。在开发过程中,确保代码在目标浏览器环境下能正确运行,以及考虑代码的可维护性和兼容性。