前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS判断重复数组是否有重复项

JS判断重复数组是否有重复项

作者头像
web前端教室
发布2018-02-06 11:04:53
7.1K0
发布2018-02-06 11:04:53
举报
文章被收录于专栏:web前端教室web前端教室

大家好,今天我们来讲一下,如何使用javascript判断一个数组之中,是否有相同重复的元素。

在讲之前,先来讲一下思路:

在现实当中,当我们要判断某几个东西是否相同,那就意味着这东西至少是有2个或更多,

否则单个东西是没法比较的。

数组也是一样,要判断一个数组中是否有重复的元素,

最简单,最直观的方法,

就是把数组复制一份,然后用复制的数组中的每一项,和原数组逐个比较一遍,

如何有任一个相同,就返回true,否则就返回false。

这种虽然从效率上差些,但胜在容易理解。

现在我们先看下代码:

虽然很简单,就是个for循环,if判断。。

但也可能会有同学表示晕啊,看不懂。

看不明白不要紧,我大概讲下,具体怎么比较的。。

首先我们看这个函数,它接收一个数组做为参数,

那传入之后,

在这个函数中的arr就是一个数组,对它使用join方法,

将这个数组转为一个字符串,并用逗号分隔。

然后呢,声明一个变量b,把这个新字符串赋值给它,等于把它存在变量b里了。

接下来,用一个for循环来对变量b进行循环处理,

就是循环b中的字符串中的每一个字符,

在循环中用if做一个判断,判断什么呢?

关键就在这里,前面已经说过了,函数一执行的时候,

就已经把传入的数组复制了一份给了变量b,

这时变量b和数组,它俩的内容是一样一样的,

都是1,3,4,5,2

接下来会看到,

程序对变量b,使用replace方法,将变量b中的arr[i]的内容,替换为"",

运行起来是这样的:

for循环从0开始,当i=0的时候,

arr数组的第0个值,上面代码中arr[0]的值是:1,

就是把1,替换为"",

而这个replace方法,是使用在变量b身上的,

那其实就是把变量b中保存着的字符串中的,1,替换为"",

之前变量b的内容是:1,3,4,5,2

替换之后是:"",3,4,5,2

然后用indexOf在变量b中查找arr数组的第[0]个值,arr[0]的值是1,

因为数组并没有被修改,它只用来被比较的。

实际运行时就是,'"",3,4,5,2'.indexOf(1),

而这时b中的字符串已经是,b = "",3,4,5,2; 了,

当然不会查找到1了,所以就会返回-1,就是没有查找到,

因为是for循环嘛,那么i++,

到i=1的时候,

就是把b这个字符串的arr[1]项,替换为"",

依然对字符串b进行 replace 操作,

这里字符串b就是:1,,4,5,2了,

而数组arr[1]的值是3,

就等于是 '1,"",4,5,2'.indexOf(3),当然返回还是-1,没找到,

以此类推一直到arr数组的最后一个

就这样整个数组的循环一遍,

其中任何一个 >-1,就是有重复,否则就是没有重复。

其实还是很简单的哈,大家多练习下,就明白啦。

今天这个例子,它的功能很有限的,

只能判断是否有重复,

只能返回true或是false,

下次我们讲一个稍稍复杂一点的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档