在JAvascript平时项目开发中经常会用到数组去重的操作。这时候就要用到JS数组去重的方法了。

demo1:

第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作。

这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用。

demo2:

第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数组a的元素值作为定义空对象c的属性,然后判断,如果c[a[i]]不存在的话那么就定义对象 c 的属性 c[a[i]] 的属性值是1(可以是任何值)。至此就好理解多了,依次类推当后面出现和c[a[i]]的属性名相同的时候也就是原数组a的元素出现重复的时候判断的结果就是true这个时候跳出判断,新数组b就不追加这个元素值,然后可以达到数组去重的效果,demo很清晰,可以参考。

demo3:

第三种JS数组去重的方法是利用JS的forEach方法遍历原数组a,然后利用形参val,index,array做判断。array.indexOf(val)==index。在if判断中利用数组的indexOf()判断返回的结果是括号里面的值首次出现的位置来判断,如果括号里面是true的话则说明当前的val值是在数组中首次出现的,所以空数组b后面追加这个值,这这次forEach中,后面所有 出现这个值的时候都将返回false,不做任何处理,因此可以达到数组去重的效果,这个方法利用forEach是比较巧妙的,也推荐使用。

demo4:

第四种数组去重的方法也比较常见,首先将原来的数组a进行从小到大或者从大到小的排序,然后定义一个空数组b,同时定义一个变量item。遍历原数组a,在for循环里面判断item!=a[i],如果不相等的话则b后面追加这个a[i],同时item等于a[i]。如果相等的话则跳过,这样也可以达到数组去重的操作。

当然Javascript中数组去重的方法不止这四种,肯定还有其他去重的好方法,如果有好的方法也请给我补充。

每天进步一点点

javaScript数组去重方法的更多相关文章

  1. JavaScript数组去重方法及测试结果

    最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测 ...

  2. JavaScript 数组去重方法总结

    1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中) // 遍历数组去重法 function unique(arr){ var _arr = [ ...

  3. JavaScript 数组去重 方法汇总

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  4. JavaScript数组去重方法汇总

    1.运用数组的特性 1.遍历数组,也遍历辅助数组,找出两个数组中是否有相同的项,若有则break,没有的话就push进去. //第一版本数组去重 function unique(arr){ var r ...

  5. JavaScript数组去重方法总结

    一.双重遍历去重 function onlyFigure(arr) { let newarr = []; const length = arr.length for (let i = 0; i < ...

  6. JavaScript实现数组去重方法

    一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'tru ...

  7. JavaScript数组去重的几种方法

    这个老问题,网上普遍都有了,为什么要再写一遍呢,主要是为了记个笔记... 遍历时搜索结果数组 思路很明确,如下 新建一个数组存放结果 循环遍历原数组,对于每一个元素,在结果数组中搜索是否存在 若不存在 ...

  8. [转] JavaScript数组去重(12种方法)

    数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码.如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看.在真实的项目中碰到的数组去重,一般都是 ...

  9. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

随机推荐

  1. RabbitMQ入门-高效的Work模式

    扛不住的Hello World模式 上篇<RabbitMQ入门-从HelloWorld开始>介绍了RabbitMQ中最基本的Hello World模型.正如其名,Hello World模型 ...

  2. Jquery-全选和取消的一个坑

    在做一个商城的购物车的时候遇到了一个坑, 购物车一般都有全选按钮, 再次点击就会全部消除, 在网上查到的答案全部都是使用attr来做的, 无一例外都不能用, 之后才知道要使用jquery的prop和r ...

  3. SQL Server数据库基础笔记

    启动和停止SQL Server服务三种形式 后台启动服务 计算机->右键->管理->服务和应用程序->服务->sql server(MSSQLSERVER) SQL Se ...

  4. 脱壳练习之bitarts 5.0

    运行界面 一开始不是PUSHAD,这里我们跟到PUSHAD指令处,按F7执行该指令,接着在寄存器窗口中定位到ESP寄存器的值,在其上面单击鼠标右键选择-Follow in Dump. 仅允许非商业转载 ...

  5. [ZYNQ-7]PS处理PL外部中断的简单实例的剖析 (参考米联miz702n)

    Zynq的ARM通过GIC中断控制器来接收核仲裁所有的中断.由于中断向量表只有4Bytes大小,仅仅正好存放一条跳转语句,因此当产生一个外部中断时,中断处理的大致过程:PC内容保存到LR_IRQ用于中 ...

  6. MD5加密工具

    import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorith ...

  7. PACS发展历史

    最先推动 PACS发展的动力来自于传统的相机厂家.这是因为当数字化浪潮到来的时候,他们首先就意识到这对他们的产品是一个不可逆转的巨大的冲击.他们当然有着自己的优势:对各个厂家的设备连接能力有着最为清楚 ...

  8. Jmeter+badboy环境搭建

    [JMeter安装] 1. 访问官网 下载jmeter包 http://jmeter.apache.org/ 2. 解压到安装目录 D:\Program Files (x86)\apache-jmet ...

  9. 理解JavaScript的立即调用函数表达式(IIFE)

    首先这是js的一种函数调用写法,叫立即执行函数表达式(IIFE,即immediately-invoked function expression).顾名思义IIFE可以让你的函数立即得到执行(废话). ...

  10. 盼盼Degenerate——清除浮动的方法

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...