從 JS 陣列中刪除重複值
JavaScript 陣列中的重複元素是一個常見問題。為了解決這個問題,可以採用各種方法。
Set 和 Spread 語法:
最簡潔的解決方案使用 Set 建構子和 Spread 語法:
uniq = [...new Set(array)];
天真的方法:
為了簡單起見,一種簡單的方法是根據索引過濾元素:
uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
使用雜湊表:
更有效的方法利用雜湊表,使用物件屬性作為鍵:
function uniq(a) { var seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
組合方法:
為了處理不同的數組,混合解決方案結合了基元的雜湊表和物件的線性搜尋:
function uniq(a) { var prims = {"boolean":{}, "number":{}, "string":{}}, objs = []; return a.filter(function(item) { var type = typeof item; if(type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); else return objs.indexOf(item) >= 0 ? false : objs.push(item); }); }
排序與篩選:
過濾前排序提供了另一種選擇,根據相鄰值刪除重複項元素:
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
自訂比較:
對於唯一比較,可以傳遞回調,並過濾相同的“鍵”:
function uniqBy(a, key) { var seen = {}; return a.filter(function(item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) }
以上是如何從 JavaScript 陣列中刪除重複值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!