Javascript從“繁”到“簡”進行數組去重

來源:互聯網
上載者:User

標籤:tle   結果   dex   reac   alt   思路   對比   去掉   去重   

隨著JavaScript提供文法的增多,數組去重方式也越來越多。現在從最原始的方式到最簡潔的方式,一步步進行剖析。

雙重迴圈

數組去重,不就是比較數組元素,去掉重複出現的麼。最原始的方式不正是雙重迴圈進行比較處理嘛

建立res數組存放返回結果;外層迴圈遍曆target中的每一個數組元素,內層迴圈將target中的數組元素與res數組中的每一個值進行對比,如果都不相同,則存放到res中。迴圈完成,返回去重後的數組。這種原始的方式具有良好的相容性。

 

indexof最佳化內層迴圈

在本栗中使用indexof最佳化內層迴圈。indexOf()方法返回在數組中可以找到一個給定元素的第一個索引,如果不存在,則返回-1

使用了indexof方法,就不在需要內層迴圈,當然還有其他的方式可以最佳化內層迴圈了

javascript學習群:453833554

對象索引值對最佳化內層迴圈

對象的鍵不同重複,這個特性可以用來判斷重複元素

注意:由於對象的鍵都是字元,所以,無法區分 1 和 ‘1‘ ,所以需要再進行修改一下,存放時加上類型判斷。

加上了類型判斷, 1 對應為 Number1 , ‘1‘ 對應為 String1,即可正常區分開。

filter最佳化外層迴圈

 在本栗中使用filter最佳化外層迴圈。filter() 方法建立一個新數組, 其包含通過所提供函數實現的測試的所有元素。

在target上直接進行過濾,如果是該元素第一次出現,則返回true,否則返回false;這樣filter新建立的數組中每個元素只會出現一次,達到了去重的目的。至此我們不再使用for迴圈,代碼量也減少了很多。

Set去重

ES6 提供了新的資料結構 Set。它類似於數組,但是成員的值都是唯一的,沒有重複的值。這種特性用來數組去重,十分的方便。

 

 ‘...‘ 是ES6中的擴充運算子,此處的作用是將Set展開為用逗號隔開的參數序列 , 非常簡單的就實現了數組去重。不熟悉 ES6文法的童鞋們,先自行瞭解。如果再用上箭頭函數,真的是一句話就搞定了,如下:

 至此,從雙重迴圈的十幾行代碼到最後 set+箭頭函數的一行搞定。從‘繁’到‘簡’都已經實現了數組的去重,代碼量減少的背後是對JavaScript方法的應用。其實核心思路沒變,實現的手段變了而已。

javascript學習群:453833554

Javascript從“繁”到“簡”進行數組去重

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.