JavaScript判断数组重复内容的两种方法(推荐)

 更新时间:2016年06月06日 17:11:00   作者:FungLeo  
本文给大家介绍两种JavaScript判断数组重复内容的方法(推荐)非常不错具有参考借鉴价值,感兴趣的朋友一起看看吧

前言

一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 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),str;
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),str;
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")也是问别人才问出来的.

其实我先想到的是第二个思路,正则的问题困扰半天,终于解决了.才想到第一个思路的.

以上所述是小编给大家介绍的JavaScript判断数组重复内容的两种方法(推荐),希望能够帮助到大家!

相关文章

  • Javascript & DHTML DOM基础和基本API

    Javascript & DHTML DOM基础和基本API

    DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla的浏览器最与标准接近。
    2008-07-07
  • 微信小程序登录按钮遮罩浮层效果的实现方法

    微信小程序登录按钮遮罩浮层效果的实现方法

    这篇文章主要给大家介绍了关于微信小程序登录按钮遮罩浮层效果的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • JS前端图片最优化压缩方案

    JS前端图片最优化压缩方案

    这篇文章主要为大家介绍了JS前端图片最优化压缩方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • eval的两组性能测试数据

    eval的两组性能测试数据

    最近对eval火爆的讨论,教主 @Franky 和 灰大 @otakustay 也给了精彩的数据分析,刚好之前也做过类似的测试,我也跟风凑个热闹,提供两组数据供大家参考
    2012-08-08
  • knockoutjs动态加载外部的file作为component中的template数据源的实现方法

    knockoutjs动态加载外部的file作为component中的template数据源的实现方法

    Knockoutjs 的Components 是一种自定义的组件,它以一种强大、简介的方式将你自己的ui代码组织成一种单独的、可重用的模块。接下来通过本文给大家介绍knockoutjs动态加载外部的file作为component中的template数据源的实现方法,一起看看吧
    2016-09-09
  • 详解JS中的柯里化(currying)

    详解JS中的柯里化(currying)

    这篇文章主要介绍了JS中的柯里化(currying),需要的朋友可以参考下
    2017-08-08
  • JS仿QQ好友列表展开、收缩功能(第一篇)

    JS仿QQ好友列表展开、收缩功能(第一篇)

    这篇文章主要介绍了JS仿QQ好友列表展开、收缩功能(第一篇),需要的朋友可以参考下
    2017-07-07
  • webpack 模块热替换原理

    webpack 模块热替换原理

    这篇文章主要介绍了webpack 模块热替换原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • js实现购物网站商品放大镜效果

    js实现购物网站商品放大镜效果

    这篇文章主要为大家详细介绍了js实现购物网站商品放大镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • javascript使用call调用微信API

    javascript使用call调用微信API

    这篇文章主要介绍了javascript使用call调用微信API,需要的朋友可以参考下
    2014-12-12

最新评论