要點:javascript
Set
Object.keys()
Set
接受一個數組、字符串或者具備iterable 接口的數據結構java
// 能區分 1 和 '1' function removeDuplicate(arr) { let set = new Set(); arr.map((item) => { set.add(item); }) return [...set] } let arr = [1,1,'1',2,2,'2',3,3,'3']; console.log(removeDuplicate(arr)) // [ 1, '1', 2, '2', 3, '3' ]
function removeDuplicate(arr) { return [...new Set(arr)] } let arr = [1,1,'1',2,2,'2',3,3,'3']; console.log(removeDuplicate(arr)) // [ 1, '1', 2, '2', 3, '3' ]
function removeDuplicate(arr) { let obj = {}; arr.map((item) => { obj[item] = 1; }) return Object.keys(obj); } let arr = [1,1,'1',2,2,'2',3,3,'3']; console.log(removeDuplicate(arr)) // [ '1', '2', '3' ]
// indexOf() 不能判斷NaN // [NaN].indexOf(NaN) // -1 function Array_removeDuplicate(arr) { var newArr = []; arr.forEach((item) => { if(arr.indexOf(item) !== -1) { newArr.push(item); } }) return newArr; } Array_removeDuplicate([NaN,null,undefined,1,'1','2']) // [null, undefined, 1, "1", "2"] // es6 Array.includes(),缺點:兼容性很差 function Array_removeDuplicate(arr) { let newArr = []; arr.forEach((item) => { if(!newArr.includes(item)) { newArr.push(item); } }) return newArr; } Array_removeDuplicate([NaN,null,undefined,1,'1',true,false]) // [NaN, null, undefined, 1, "1", true, false]
常規方法能夠字符串先轉換爲數組,再去重,直接用
Set
更加方便es6
function removeDuplicate(string) { return [...new Set(string)].join('') } let string = '112aA23344556'; console.log(removeDuplicate(string)) // "12aA3456"
參考:數組