參考
雙層迴圈
let arr = [1, 2, '1', 3, 2];
// 雙重迴圈
let arr1 =
for (let i = 0; i < arr.length; i++)
} if (j === arr.length)
}
indexof
for (let i = 0; i < arr.length; i++)
}
排序後去重
let arr2 = arr.sort();
for (let i = 0; i < arr.length; i++)
}
filter
arr1 = arr.filter((item, index, arr) => )
arr1 = arr.sort().filter((item, index, arr) => )
object
let obj = {};
arr1 = arr.filter((item, index, arr) => )
es6
arr1 = array.from(new set(arr));
arr1 = [... new set(arr)];
let map = new map();
arr1 = arr.filter(item => )
方法
結果說明
for迴圈
[1, 「1」, null, undefined, string, string, /a/, /a/, nan, nan]
物件和 nan 不去重
indexof
[1, 「1」, null, undefined, string, string, /a/, /a/, nan, nan]
物件和 nan 不去重
sort
[/a/, /a/, 「1」, 1, string, 1, string, nan, nan, null, undefined]
物件和 nan 不去重 數字 1 也不去重
filter + indexof
[1, 「1」, null, undefined, string, string, /a/, /a/]
物件不去重 nan 會被忽略掉
filter + sort
[/a/, /a/, 「1」, 1, string, 1, string, nan, nan, null, undefined]
物件和 nan 不去重 數字 1 不去重
優化後的鍵值對方法
[1, 「1」, null, undefined, string, /a/, nan]
全部去重
set[1, 「1」, null, undefined, string, string, /a/, /a/, nan]
JS陣列去重,物件去重
例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...
js 陣列去重
function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...
JS 陣列去重
我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...