javascript 判断数组中的重复内容的两种方法(修复BUG) by FungLeo
来源:互联网 发布:linux内核经典书籍 编辑:程序博客网 时间:2024/05/29 02:19
javascript 判断数组中的重复内容的两种方法 by FungLeo
前言
2016年06月08日修复BUG
一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true
否则,返回 false
.
思路
- 把数组变成字符串
- 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复
如何拿A字符串
和B字符串
进行对比,并且要求判断出B字符串
中包含过个A字符串
呢?
方法一 indexOf() 和 lastIndexOf() 对比法.
首先,我们构建代码:
var arr = ["aa","bb","cc","bb","aa"];arrRepeat(arr);
如上,我们要用一个arrRepeat(arr)
的校验函数并执行,下面来构建这个函数
function arrRepeat(arr){ var arrStr = JSON.stringify(arr); for (var i = 0; i < arr.length; i++) { if (arrStr.indexOf('"'+arr[i]+'"') != arrStr.lastIndexOf('"'+arr[i]+'"')){ return true; } }; return false;}
OK,运行成功.
原理特别简单,就是,数组中的字段,在由数组变成的字符串中的首次出现位置和最后一次出现位置是否一致,如果不一致,就说明这个重复出现了.
方法二 match() 正则对比方法
首先,和上面一样,我们构建代码:
var arr = ["aa","bb","cc","bb","aa"];arrRepeat(arr);
然后,我们重新构建arrRepeat(arr)
函数
function arrRepeat(arr){ var arrStr = JSON.stringify(arr); for (var i = 0; i < arr.length; i++) { if ((arrStr.match(new RegExp('"'+arr[i]+'"',"g")).length)>1){ return true; } }; return false;}
原理是查找确定的重复次数,如果是大于1的话,就肯定是重复了.注意,这里是能够准确的查找出出现了几次的哦!所以,这个方法其实有更广泛的用途.
OK,运行又一次成功
总结
- 如果仅仅是比对第一个方法其实足够用了.
- 第二个方法可以查找出现的真实次数,比如重复了4次,就能找到4.具体的用途自己思考咯.
- 构建包含变量的正则的方法
new RegExp(arr[i],"g")
也是问别人才问出来的. - 其实我先想到的是第二个思路,正则的问题困扰半天,终于解决了.才想到第一个思路的.
本文由FungLeo原创,允许转载.但转载必须署名作者,并保留文章首发链接.否则将追究法律责任.
首发地址:http://blog.csdn.net/FungLeo/article/details/51596404
2016年06月08日修复BUG说明
之前考虑的代码没有考虑过数组内一个字段的内容包含另一个字段的内容的这种特殊情况,导致这样的情况下会判断数组是重复的,其实是没有重复的。
举个例子:
var arr = ["a","aa"]
如这样的情况,原来的代码就会判断这个是重复的字段了。因此,新的代码加上了双引号,这样就避免了这个问题了。
或许大的项目中的一些BUG也是这样的原因产生的吧:)
2 0
- javascript 判断数组中的重复内容的两种方法(修复BUG) by FungLeo
- javascript 数组排序sort方法和自我实现排序方法的学习小结 by FungLeo
- 排除数组中重复的内容的两种方法
- javascript 返回数组中 最大 最小 平均值多种方法分析比较 by FungLeo
- javascript 从一组数据中找到指定的单条数据的方法 by FungLeo
- javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo
- javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo
- 移动端H5之动态设置html的font-size的横屏BUG修复以及横屏提示 by FungLeo
- Javascript去掉数组重复内容的2种办法
- JavaScript中去掉数组中的重复值的实现方法
- javascript遍历数组的两种方法
- javascript遍历数组的两种方法
- javascript 判断一个数字是否为质数实现方式若干 by FungLeo
- php获取数组中重复数据的两种方法
- javascript 学习小结 (二)新增小数取整各种方法 by FungLeo
- Javascript判断数组的方法
- Java中的equals与hashCode方法(判断插入容器的内容是否重复)
- javascript如何判断数组内元素是否重复的方法集锦
- http://www.hainiaowo.com/ask/detail-8974-1
- No Retrofit annotation found
- Ubuntu安装KVM
- Hibernate中的Entity类之间的继承关系之二SINGLE_TABLE
- windows下安装numpy,scipy遇到的问题总结
- javascript 判断数组中的重复内容的两种方法(修复BUG) by FungLeo
- CATalyst——针对末级缓存侧信道攻击的防御技术
- 面试中常见链表问题13:回文链表
- 15 个 Android 通用流行框架大全
- 链表面试题之合并有序的两个线性表-递归和非递归的方法
- 将List中的对象按对象某一属性的大小来排序
- serverlet 分文件处理
- 乐学成语(HappyIdiom)
- 大数据到底是啥?到底要怎么学?