function uniQueue(array) {
var arr = [];
var m;
while (array.length > 0) {
m = array[0];
arr.push(m);
array = $.grep(array, function(n, i) {
return n == m;
}, true); // true 表示反轉:保留不等於 m 的元素
}
return arr;
}
m。m 加入結果數組 arr。$.grep(array, fn, true) 過濾原數組,保留不等於 m 的元素(第三參數 true 為反轉模式)。實現去重並保持首次出現順序。例如 [1,2,1,3,2] → [1,2,3]。
grep 遍歷剩餘數組,且修改原數組引用。$.grep,非原生 JS。// ES6 Set (最簡潔、O(n))
const unique = [...new Set(array)];
// ES5 filter + indexOf (不依賴庫、保持順序)
const unique = array.filter((v, i, a) => a.indexOf(v) === i);
// Map 計數 (可獲取重複次數)
const map = new Map();
array.forEach(v => map.set(v, (map.get(v) || 0) + 1));
uniQueue 是一個基於 jQuery 的教學級去重實現,理解其邏輯有助於掌握數組過濾思想,但生產環境請使用 ES6 Set 或原生 filter。