在日常的開發工作中,我們經常需要處理數組中的重復元素問題。而使用Javascript去重是一種非常方便、高效的方法。下面將詳細介紹Javascript去重的幾種方式。
首先,最簡單的一種方式是使用for循環來遍歷數組,然后將已經訪問過的元素與后續的元素進行比較,如果相同就將其從數組中刪除。如下所示:
function unique1(arr){ for(var i=0;i但這種方式的效率較低,特別是在遇到大量元素的數組時,耗費的時間會非常長。
接下來,就引入了一種高效的去重方式——使用ES6的Set對象。
function unique2(arr){ return Array.from(new Set(arr)) }Set對象是ES6的一個新特性,其可以接受任何可迭代對象作為參數,包括類數組對象和字符串等。Set對象可以用來存儲不重復的值,因此非常適合用來進行去重操作,而且其效率非常之高。
除此之外,我們還可以使用Map對象進行去重操作。
function unique3(arr){ const map = new Map(); return arr.filter(item =>!map.has(item) && map.set(item,1)) }Map對象是一種鍵/值對的集合,其中每個鍵只能對應一個值。在這個例子中,我們使用Map對象的has()方法判斷元素是否出現過,如果沒有出現過,則將其添加到Map對象中,最終返回去重后的數組。
最后,我們還可以使用reduce()方法對數組進行去重。
function unique4(arr){ return arr.reduce((prev,cur) =>prev.includes(cur) ? prev : [...prev,cur],[]); }reduce()方法對數組的每個元素執行一個由您提供的reducer函數,該函數將每個元素映射到一個新的值。在這個例子中,我們使用prev數組存儲之前出現過的元素,cur參數表示當前元素。通過includes()判斷cur是否在prev數組中出現過,如果未出現過就將其添加到prev數組中。最終返回去重后的數組。
通過以上的介紹,我們可以看到Javascript去重有多種方法,每種方法都有其優缺點,需要根據具體場景選擇最適合的方式。