JavaScript字符串数组去重实现方案汇总
本文汇总了JavaScript中字符串数组去重的多种实现方式,涵盖ES6的Set语法、ES5的filter结合indexOf方法、ES3的手动遍历以及正则表达式处理。通过对比不同版本的代码逻辑与运行结果,帮助开发者根据实际需求选择最合适的去重方案。
JavaScript字符串数组去重实现方案汇总
本文介绍了使用JavaScript实现字符串数组去重的具体方法,供读者参考学习。
本文仅针对最简单的字符串数组进行去重处理,暂不涉及对象、函数或NaN等复杂情况,因为针对这些类型使用正则表达式处理往往事倍功半。
非正则表达式实现:ES6与ES5
首先介绍不使用正则表达式的实现方式,包括基于ES6标准的方法。
<script>
let str_arr=["b","c",1,"a", 3,"v", "2","e", "6","g", "9", "arr",9, "hello",",6", "9", "1", 2, 6, "b", "c"]
function unique(arr){
return [...new Set(arr)]
}
console.log(unique(str_arr))
</script>
代码运行后的输出结果如下所示。

接下来展示基于ES5标准的实现方式。
<script>
var str_arr = ["b","c",1,"a", 3,"v", "2","e", "6","g", "9", "arr",9, "hello",",6", "9", "1", 2, 6, "b", "c"]
function unique(arr) {
return arr.filter(function(ele, index, array) {
return array.indexOf(ele) === index
})
}
console.log(unique(str_arr))
</script>
该方法的运行结果与前述ES6实现一致。
兼容ES3的实现方式
随后介绍兼容ES3旧版浏览器的实现方式。
<script>
var str_arr = ["b","c",1,"a", 3,"v", "2","e", "6","g", "9", "arr",9, "hello",",6", "9", "1", 2, 6, "b", "c"]
function unique(arr) {
var obj = {},
array = []
for (var i = 0, len = arr.length; i < len; i++) {
var key = arr[i] + typeof arr[i]
if (!obj[key]) {
obj[key] = true
array.push(arr[i])
}
}
return array
}
console.log(unique(str_arr))
</script>
此方式的运行结果同样与前述方法相同。
正则表达式去重方案
最后探讨利用正则表达式进行去重的实现方案。
<script>
var str_arr = ["b","c",1,"a", 3,"v", "2","e", "6","g", "9", "arr",9, "hello",",6", "9", "1", 2, 6, "b", "c"]
function unique(arr) {
return arr.sort().join(",,").
replace(/(,|^)([^,]+)(,,\2)+(,|$)/g, "$1$2$4").
replace(/,,+/g, ",").
replace(/,$/, "").
split(",")
}
console.log(unique(str_arr))
</script>
使用正则表达式处理后的运行结果如下。

在线测试与辅助工具推荐
感兴趣的用户可以通过在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun 来测试上述代码的实际运行效果。
此外,本文还推荐以下几款相关辅助工具供参考使用:
在线去除重复项工具: http://tools.jb51.net/code/quchong
在线文本去重复工具: http://tools.jb51.net/aideddesign/txt_quchong
如需了解更多JavaScript相关知识,可查阅本站专题:《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript错误与调试技巧总结》。
希望本文提供的关于JavaScript程序设计的技巧能对大家有所帮助。
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
