JavaScript Array去重是日常開發中常遇到的問題。針對數組去重,我們可以使用循環比較、ES6 Set、ES6 Map等方式來實現。本文將介紹這些方法并給出示例代碼,希望能對讀者在實際開發中有所幫助。
一、使用循環遍歷方法去重
function unique(arr) { var res = [] for (var i = 0, len = arr.length; i< len; i++) { if (res.indexOf(arr[i]) === -1) { res.push(arr[i]) } } return res }
以上為常規的循環方法,該方法時間復雜度較高,在數據量較大時不太適用。
二、使用ES6 Set方法去重
function unique(arr) { return Array.from(new Set(arr)) }
以上代碼中,Set 可以自動去重,然后利用 Array.from 將 Set 結構轉換成數組。同時,如果使用 ES6 的擴展運算符 ... 也可以實現數組去重:
function unique(arr) { return [...new Set(arr)] }
ES6 Set 去重的時間復雜度會好于循環方法。
三、使用ES6 Map方法去重
function unique(arr) { let map = new Map() let res = [] for (let i = 0; i< arr.length; i++) { if (!map.has(arr[i])) { map.set(arr[i], true) res.push(arr[i]) } } return res }
利用 ES6 Map 對比去重,該方法時間復雜度較低,是目前效率最高的去重方法之一。
四、數組去重總結
上述三種方法各有優缺點,具體使用要視情況而定。除此之外,還有很多其他的方法可以達到去重的效果,如利用 indexOf 或 includes,但其時間復雜度相對較高,因此不推薦使用。同時,需要注意一些特殊情況,如對于 NaN、undefined 等特殊數據類型,可以通過簡單的 if 判斷進行過濾處理。
五、總結
JavaScript Array去重是我們在日常開發中經常會遇到的問題。通過本文的介紹,我們了解了三種主流的去重方法,它們在時間復雜度、代碼實現難度和代碼優雅度上各有特點。多注意數組去重的特殊情況,能讓我們更好地解決問題。
上一篇css3 滑動事件
下一篇css3 立體div