JS常见面试题-判断数组中是否有重复元素(JS常见面试题-判断数组中是否有重复元素)
JS常见面试题-判断数组中是否有重复元素(JS常见面试题-判断数组中是否有重复元素)根据上述的思想,我们得到以下的代码。最后判断,如果在剩下的字符串中还能匹配出元素对应的字符串,则代表数组中有相同的元素。主要思想:对于任意的数组,首先将其用特定的分隔符转化字符串,然后在末尾添加一个相同的分隔符。然后对数组元素进行遍历,将得到的字符串中元素对应的字符串用空串代替。
前言今天这篇文章我们一起来看看,一道常见的关于Javascript的面试题,如何判断一个数组中是否有重复的元素?
这篇文章的代码我已经放到了自己的github上,感兴趣的同学可以看看。
https://github.com/zhouxiongking/article-pages/blob/master/articles/isDuplicateEleInArr/isDuplicateEleInArr.js
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测试
说明上述的方法测试代码中只是假定数组元素为简单类型,其实数组元素也可以为对象类型,如果是对象类型的话,一般是比较对象的某个属性,此时就同上述方法一样。
结束语今天这篇文章中讲到的四种判断数组中是否有重复元素的方法,大家都学会了吗?或者大家有其他方法也欢迎交流。