位置: IT常识 - 正文

JS实现数组去重的八种方法(实用)(js 数组去重的四种方法)

编辑:rootadmin
JS实现数组去重的八种方法(实用) 前言

推荐整理分享JS实现数组去重的八种方法(实用)(js 数组去重的四种方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中数组去重的方法,js写数组去重,js如何数组去重,js数组去重indexof,js 数组去重的四种方法,js 数组去重,js中数组去重复的方法有哪些,js 数组去重的四种方法,内容如对您有帮助,希望把文章链接给更多的朋友!

js数组去重是比较常见的数组操作方式之一,网上有很多关于数组去重的博客文章,方法各式各样,但有些方法实用性很差,很容易造成不必要的麻烦,所以我们需要去其糟粕取其精华,下面我们就整理一些比较实用的数组去重方法。

Methods 1:利用双重for循环JS实现数组去重的八种方法(实用)(js 数组去重的四种方法)

思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

function unique(arr) { let newArr = [arr[0]]; for (let i = 1; i < arr.length; i++) { let repeat = false; for (let j = 0; j < newArr.length; j++) { if (arr[i] === newArr[j]) { repeat = true; break; } } if (!repeat) { newArr.push(arr[i]); } } return newArr;}console.log(unique([1, 1, 2, 5, 5, 3, 4, 9, 6, 3, 4]));// 结果是[1, 2, 5, 3, 4, 9, 6]Methods 2:利用对象

思路:利用对象属性存在的特性,如果没有该属性则存入新数组

function unique(arr) { const newArr = [] const obj = {} arr.forEach(item => { if (!obj[item]) { newArr.push(item) obj[item] = true } }) return newArr } console.log(unique([1, 1, 2, 5, 5, 3, 4, 9, 6, 3, 4])) // 结果是[1, 2, 5, 3, 4, 9, 6]Methods 3:利用数组的indexOf方法

思路:新建一个空数组,遍历需要去重的数组,将数组元素存入新数组中,存放前判断数组中是否已经含有当前元素,没有则存入。此方法也无法对NaN去重。

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];function unique(arr) { //定义一个新的临时数组 var newArr=[]; //遍历当前数组 for(var i=0;i<arr.length;i++) { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if(newArr.indexOf(arr[i]) === -1) { //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1 newArr.push(arr[i]); } } return newArr } var arr2 = unique(arr); console.log(arr2); //[ 1, 9, 8, 7, 2, 5, 3, 4, 444, 55, 22]Methods 4:利用数组的includes方法

思路:此方法逻辑与indexOf方法去重异曲同工,只是用includes方法来判断是否包含重复元素。

function unique(arr) { var newArr = [] for (var i = 0; i < arr.length; i++) { if (!newArr.includes(arr[i])) { newArr.push(arr[i]) } } return newArr}console.log(unique([1,5,1,5,3,74,32,7,32,6,9,4,7,4]));// 结果是[1, 5, 3, 74, 32, 7, 6, 9, 4]Methods 5:利用数组的 filter 和 includes方法

同理,filter+indexOf也可

function unique(arr) { var newArr = [] newArr = arr.filter(function (item) { return newArr.includes(item) ? '' : newArr.push(item) }) return newArr}console.log(unique([1,5,1,5,3,74,32,7,32,6,9,4,7,4]));// 结果是[1, 5, 3, 74, 32, 7, 6, 9, 4]Methods 6:利用数组的 forEach 和 includes方法function unique(arr) { let newArr = []; arr.forEach(item => { return newArr.includes(item) ? '' : newArr.push(item); }); return newArr;}console.log(unique([1,1,2,5,6,3,5,5,6,8,9,8]));// 结果是[1, 2, 5, 6, 3, 8, 9]Methods 7:利用数组的 splice 方法。function unique(arr){ for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ //如果第一个等于第二个,splice方法删除第二个 arr.splice(j,1); j--; } } } return arr;}var arr = [1,1,2,5,6,3,5,5,6,8,9,8];console.log(unique(arr))//[ 1, 2, 5, 6, 3, 8, 9 ]Methods 8:利用Set()+Array.from()

代码最简洁,原理:

Set对象:是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即Set中的元素是唯一的。Array.from() 方法:对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。function unique(arr){ return Array.from(new Set(arr))}var arr = [1,1,2,9,6,9,6,3,1,4,5];console.log(unique(arr))//[ 1, 2, 9, 6, 3, 4, 5 ]
本文链接地址:https://www.jiuchutong.com/zhishi/300269.html 转载请保留说明!

上一篇:学习CSS3,模拟春雪漫天飘的动画效果(css3的模块结构和应用)

下一篇:SpringIOC和AOP介绍(spring的aoc和aop)

  • 怎样找到励志的长故事(怎么找那些励志美图)

    怎样找到励志的长故事(怎么找那些励志美图)

  • iqoo8pro怎么开启游戏伴侣(iQOO8Pro怎么开启LTPO)

    iqoo8pro怎么开启游戏伴侣(iQOO8Pro怎么开启LTPO)

  • vivox70pro怎么关闭运行程序(vivox70pro怎么关机键)

    vivox70pro怎么关闭运行程序(vivox70pro怎么关机键)

  • 苹果手机投影到墙上怎么弄(苹果手机投影到电脑)

    苹果手机投影到墙上怎么弄(苹果手机投影到电脑)

  • 苹果facetime怎么用(苹果facetime怎么关摄像头)

    苹果facetime怎么用(苹果facetime怎么关摄像头)

  • wps多余页怎么删除(wps怎么把多余页删除)

    wps多余页怎么删除(wps怎么把多余页删除)

  • 淘宝怎么搜不到电子烟了(千牛上架了淘宝怎么搜不到)

    淘宝怎么搜不到电子烟了(千牛上架了淘宝怎么搜不到)

  • mate30几点发布(华为mate30发布)

    mate30几点发布(华为mate30发布)

  • 苹果x刘海屏红点闪烁(苹果刘海屏红灯一直在闪烁)

    苹果x刘海屏红点闪烁(苹果刘海屏红灯一直在闪烁)

  • 华为圆圈怎么设置(华为怎么弄那个圆圈)

    华为圆圈怎么设置(华为怎么弄那个圆圈)

  • 苹果xr连接wifi不稳定(苹果xr连接wifi不显示图标)

    苹果xr连接wifi不稳定(苹果xr连接wifi不显示图标)

  • 充电宝找不到地方还怎么办(充电宝找不到地方还会一直扣钱吗)

    充电宝找不到地方还怎么办(充电宝找不到地方还会一直扣钱吗)

  • 微信钱包记录删除可以恢复吗(微信钱记录删除怎么恢复)

    微信钱包记录删除可以恢复吗(微信钱记录删除怎么恢复)

  • 微信号改过一次怎么改第二次(微信号改过一次还想改回原来的微信号)

    微信号改过一次怎么改第二次(微信号改过一次还想改回原来的微信号)

  • xp系统装不上打印机驱动

    xp系统装不上打印机驱动

  • 苹果6苹果7区别(苹果6苹果7区别尺寸)

    苹果6苹果7区别(苹果6苹果7区别尺寸)

  • 手机信号线断了会怎么样(手机信号线断了会怎样)

    手机信号线断了会怎么样(手机信号线断了会怎样)

  • 电子邮件地址中,符号@后面的部分是(密码不能包含电子邮件地址中)

    电子邮件地址中,符号@后面的部分是(密码不能包含电子邮件地址中)

  • 为什么快手看不到别人的粉丝和关注(为什么快手看不到消息)

    为什么快手看不到别人的粉丝和关注(为什么快手看不到消息)

  • 手机定位显示离线是什么原因(手机定位显示离线)

    手机定位显示离线是什么原因(手机定位显示离线)

  • 淘宝怎么开通亲情号(淘宝怎么开通亲密度付)

    淘宝怎么开通亲情号(淘宝怎么开通亲密度付)

  • 对讲机ptt是什么意思(对讲机ptt键在哪个位置)

    对讲机ptt是什么意思(对讲机ptt键在哪个位置)

  • vue怎么把视频变快(vue怎么把视频变全屏)

    vue怎么把视频变快(vue怎么把视频变全屏)

  • 怎样用手机号码找人(怎样用手机号码查到对方的身份证)

    怎样用手机号码找人(怎样用手机号码查到对方的身份证)

  • 微信中怎么查看被隐藏的微信号(微信中怎么查看银行卡号码)

    微信中怎么查看被隐藏的微信号(微信中怎么查看银行卡号码)

  • yy怎么搜索频道房间(yy频道搜索在哪里)

    yy怎么搜索频道房间(yy频道搜索在哪里)

  • 电脑玩网络游戏报错怎么办?有什么办法解决吗?(电脑玩网络游戏一小时多少流量)

    电脑玩网络游戏报错怎么办?有什么办法解决吗?(电脑玩网络游戏一小时多少流量)

  • 穿越火线改名卡怎么用?(穿越火线改名卡买完了怎么用)

    穿越火线改名卡怎么用?(穿越火线改名卡买完了怎么用)

  • 【uni-app】swiper的使用(uni-swiper-dot)

    【uni-app】swiper的使用(uni-swiper-dot)

  • phpcms v9 537报错(phpcms模块)

    phpcms v9 537报错(phpcms模块)

  • 销售给学员的教材是否要缴纳增值税?
  • 公司注册认缴和实缴的区别
  • 业务招待费扣除基数的收入包括哪些
  • 月末进项税额转出科目需要结转吗
  • 叉车维修费计什么费用
  • 设计、制造
  • 股权转让涉及房屋产权变更怎么办
  • 资产减值准备怎么转回
  • 筹建期间的费用可以扣除吗
  • 信用贷的基本准入要求
  • 我公司只开了普票未开专票是否需要发票认证?
  • 开具出口发票时免税类型怎么选择?
  • 机动车类专用发票
  • 移动电子发票怎么发送到邮箱
  • 销售费用变动率公式
  • 农民专业合作经济组织可以贷款吗
  • 注册资金印花税怎么算
  • 怎么查询企业的注册资金
  • 用后期进项抵欠怎么做账
  • windows7给c盘扩容
  • 年终奖个税如何计算
  • PHP:oci_set_module_name()的用法_Oracle函数
  • php压缩包
  • 开机反应慢是怎么回事
  • 以产品对外投资需要进项税额转出吗
  • 有关五险一金的知识
  • 建设项目的设计阶段分为
  • php调用图片
  • laravel 分层
  • thinkphp-5.0
  • 前端使用vue
  • 微信小程序在哪里打开
  • 强化学习——Q-Learning算法原理
  • 这可能是最好的144平米小平层户型
  • 可供出售金融资产和交易性金融资产
  • 个税借方的含义
  • 预付款能不能开票入账
  • 不缴纳增值税的收入需要缴纳水利税吗
  • python中的logging记录日志
  • mongodb常用命令
  • dedecms插件
  • 公司开一般户需要多久
  • 企业所得税季末资产总额
  • 技术安装工人包食宿
  • 金蝶软件修改凭证
  • 增值税发票联次及其作用
  • 冲去年管理费用
  • 厂家给经销商的活动方案怎么写
  • 公司举办活动的好处
  • 发票税号与公司税号不一致
  • 支付残疾人保证金的现金流
  • 发现以前的账做错了
  • mysql提高效率
  • mysql索引用法
  • win2003自动关机
  • fedora os
  • linux如何加载动态库
  • linux 判断语句
  • win7关闭xhci
  • 简单3招 让win10资源管理变得更方便简洁
  • win7系统浏览器打不开网页怎么办
  • win10共享打印机win7连不上
  • eclipse 代码提示指令在哪改
  • Nodejs实现多人同时在线移动鼠标的小游戏分享
  • pythonweb框架有哪些
  • javascript definitive guide
  • Please ensure that adb is correctly located at 'D:Androidandroid-sdkplatform-toolsadb.exe' and
  • android 笔记软件推荐
  • 使用express
  • linux bash命令详解
  • 如何获取android实体类保存的数据
  • 安卓开发日记本
  • Python中遍历字典
  • 志愿者开展活动后存在的问题
  • 小规模纳税人网上开专票流程
  • 出口退税是哪个环节交的
  • 计算车辆购置税公式
  • 公共基础设施项目所得税优惠目录
  • 浪潮报销软件安装
  • 国家产业政策是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设