龙空技术网

JS常见面试题-判断数组中是否有重复元素,你能写出几种呢?

前端周老师 344

前言:

当前我们对“js数组是否相等怎么判断”大致比较关怀,各位老铁们都需要学习一些“js数组是否相等怎么判断”的相关知识。那么小编在网摘上汇集了一些对于“js数组是否相等怎么判断””的相关文章,希望咱们能喜欢,你们快快来了解一下吧!

前言

今天这篇文章我们一起来看看,一道常见的关于Javascript的面试题,如何判断一个数组中是否有重复的元素?

这篇文章的代码我已经放到了自己的github上,感兴趣的同学可以看看。

Javascript

方法1

主要思想:

对于任意的数组,首先将其用特定的分隔符转化字符串,然后在末尾添加一个相同的分隔符。

然后对数组元素进行遍历,将得到的字符串中元素对应的字符串用空串代替。

最后判断,如果在剩下的字符串中还能匹配出元素对应的字符串,则代表数组中有相同的元素。

根据上述的思想,我们得到以下的代码。

方法1代码

通过以下测试,证明了上述方法的正确性。

方法1测试

方法2

主要思想:

借助Array原生的sort方法,先将数组排好序

每个元素依次和后面的元素相比较,如果相同则表明数组中有相同的元素

根据以上的思想可以得出以下的代码实现。

方法2代码

通过以下测试证明方法2的正确性。

方法2测试

方法3

主要思想:

创建一个对象,将数组中的每个值作为对象的键。

依次判断对象的键是否已经存在,如果已经存在则表明数组有重复元素。

根据主要思想可以得到以下的代码。

方法3代码

通过以下测试,证明方法3的正确性。

方法3测试

方法4

主要思想:

借助Array原生的reduce方法,将数组元素做为一个对象的键,设定值为任意简单值类型

判断得到对象的key长度是否和数组长度相同,如果不相同则表明数组中有重复元素。

方法4和方法3其实主要思想是一样的,都是利用对象键值对的唯一性,方法4相比于方法3代码会更加简洁。

通过以上思想得到以下方法代码。

方法4代码

通过以下测试,证明方法4的正确性。

方法4测试

说明

上述的方法测试代码中只是假定数组元素为简单类型,其实数组元素也可以为对象类型,如果是对象类型的话,一般是比较对象的某个属性,此时就同上述方法一样。

结束语

今天这篇文章中讲到的四种判断数组中是否有重复元素的方法,大家都学会了吗?或者大家有其他方法也欢迎交流。

标签: #js数组是否相等怎么判断 #js判断数组为空字符串