JavaScript常见的五种数组去重的方式
发布时间 - 2026-01-10 21:50:30 点击率:次大致介绍

JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结
先来建立一个数组
var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN];
第一种
思路:建立一个临时数组,用for循环去依次判断arr中的每个项在临时数组中是否有相同的值,如果没有则将这个值添加到临时数组,如果有相同的值则不添加,最后返回这个临时数组
代码:
Array.prototype.removeDuplicate = function(){
var n = [];
for(var i=0;i<this.length;i++){
if(n.indexOf(this[i]) == -1 ){
n.push(this[i]);
}
}
return n;
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的", NaN, NaN]
注意:不会去掉重复的NaN值
第二种
思路:建立一个临时数组,用for循环利用indexOf()方法去依次判断arr中的每个项在arr中第一次出现的位置,如果这个项在arr中第一次出现的位置就是它的位置,表明在它之前没有相同的值则把它添加到临时数组中,如果这个项在arr中第一次出现的位置不是他的位置则表明在它之前有相同的值,则不把他添加到临时数组中;最后返回临时数组
代码:
Array.prototype.removeDuplicate = function(){
var n = [];
for(var i=0;i<this.length-1;i++){
if(this.indexOf(this[i]) == i){
n.push(this[i]);
}
}
return n;
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的"]
注意:会把NaN值删除
第三种
思路:建立一个临时对象,利用for循环检测这个临时对象有没有arr[i]这个属性,如果没有这个属性表明arr[i]在它之前没有和它重复的值。把临时对象的arr[i]属性设置为true,表明有这个属性并把这个项添加到临时数组中;最后返回临时数组
代码:
Array.prototype.removeDuplicate = function(){
var n = [],m = {};
for(var i=0;i<this.length;i++){
if(!m[this[i]]){
m[this[i]] = true;
n.push(this[i]);
}
}
return n;
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]
第四种
思路:先将这个数组排序,然后比较每个项和它后面的项的值是否相等,如果不相等则添加到临时数组中;最后返回临时数组
代码:
Array.prototype.removeDuplicate = function(){
var n = [];
this.sort();
for(var i=0;i<this.length;i++){
if(this[i] != this[i+1]){
n.push(this[i]);
}
}
return n;
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, 34, NaN, NaN, "我", "我的"]
注意:不会去掉重复的NaN值
第五种
思路:利用ES6的方法set方法去重,并用Array.from转换为数组
set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目,返回一个对象
代码:
Array.prototype.removeDuplicate = function(){
return (Array.from(new Set(this)));
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js
# 数组去重
# JavaScript数组去重和扁平化函数介绍
# JS数组去重详情
# JavaScript数组去重的几种方法详谈
# JavaScript数组去重方案
# JavaScript 数组去重详解
# 七种JS实现数组去重的方式
# 建立一个
# 组中
# 如果没有
# 是一种
# 把他
# 数据结构
# 或者是
# 做个
# 它可以
# 会把
# 设置为
# 并把
# 转换为
# 五种
# 先将
# 先来
# 第二种
# 第一种
# 则将
# 第三种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
HTML 中如何正确使用模板变量为元素的 name 属性赋值
如何快速辨别茅台真假?关键步骤解析
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
html5的keygen标签为什么废弃_替代方案说明【解答】
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
如何在IIS服务器上快速部署高效网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Bootstrap CSS布局之列表
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel怎么使用artisan命令缓存配置和视图
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何快速搭建高效服务器建站系统?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
企业网站制作这些问题要关注
Laravel如何使用模型观察者?(Observer代码示例)
南京网站制作费用,南京远驱官方网站?
高防服务器租用如何选择配置与防御等级?
Java解压缩zip - 解压缩多个文件或文件夹实例
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
焦点电影公司作品,电影焦点结局是什么?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Java遍历集合的三种方式
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
如何在宝塔面板中创建新站点?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
JS实现鼠标移上去显示图片或微信二维码
深圳网站制作的公司有哪些,dido官方网站?
如何用AWS免费套餐快速搭建高效网站?
Python进程池调度策略_任务分发说明【指导】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
nodejs redis 发布订阅机制封装实现方法及实例代码
如何在香港免费服务器上快速搭建网站?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Python自动化办公教程_ExcelWordPDF批量处理案例
JavaScript中的标签模板是什么_它如何扩展字符串功能

