Javascript常見面試題-判斷數組中是否有重複元素

前言

今天這篇文章我們一起來看看,一道常見的關於Javascript的面試題,如何判斷一個數組中是否有重複的元素?

這篇文章的代碼我已經放到了自己的github上,感興趣的同學可以看看。

https://github.com/zhouxiongking/article-pages/blob/master/articles/isDuplicateEleInArr/isDuplicateEleInArr.js

Javascript常見面試題-判斷數組中是否有重複元素

Javascript

方法1

主要思想:

  • 對於任意的數組,首先將其用特定的分隔符轉化字符串,然後在末尾添加一個相同的分隔符。

  • 然後對數組元素進行遍歷,將得到的字符串中元素對應的字符串用空串代替。

  • 最後判斷,如果在剩下的字符串中還能匹配出元素對應的字符串,則代表數組中有相同的元素。

根據上述的思想,我們得到以下的代碼。

Javascript常見面試題-判斷數組中是否有重複元素

方法1代碼

通過以下測試,證明了上述方法的正確性。

Javascript常見面試題-判斷數組中是否有重複元素

方法1測試

方法2

主要思想:

  • 藉助Array原生的sort方法,先將數組排好序

  • 每個元素依次和後面的元素相比較,如果相同則表明數組中有相同的元素

根據以上的思想可以得出以下的代碼實現。

Javascript常見面試題-判斷數組中是否有重複元素

方法2代碼

通過以下測試證明方法2的正確性。

Javascript常見面試題-判斷數組中是否有重複元素

方法2測試

方法3

主要思想:

  • 創建一個對象,將數組中的每個值作為對象的鍵。

  • 依次判斷對象的鍵是否已經存在,如果已經存在則表明數組有重複元素。

根據主要思想可以得到以下的代碼。

Javascript常見面試題-判斷數組中是否有重複元素

方法3代碼

通過以下測試,證明方法3的正確性。

Javascript常見面試題-判斷數組中是否有重複元素

方法3測試

方法4

主要思想:

  • 藉助Array原生的reduce方法,將數組元素做為一個對象的鍵,設定值為任意簡單值類型

  • 判斷得到對象的key長度是否和數組長度相同,如果不相同則表明數組中有重複元素。

方法4和方法3其實主要思想是一樣的,都是利用對象鍵值對的唯一性,方法4相比於方法3代碼會更加簡潔。

通過以上思想得到以下方法代碼。

Javascript常見面試題-判斷數組中是否有重複元素

方法4代碼

通過以下測試,證明方法4的正確性。

Javascript常見面試題-判斷數組中是否有重複元素

方法4測試

說明

上述的方法測試代碼中只是假定數組元素為簡單類型,其實數組元素也可以為對象類型,如果是對象類型的話,一般是比較對象的某個屬性,此時就同上述方法一樣。

結束語

今天這篇文章中講到的四種判斷數組中是否有重複元素的方法,大家都學會了嗎?或者大家有其他方法也歡迎交流。

相關推薦

推薦中...