1、常用的方法,双层for循环,外层遍历数组,内层判断是否重复,效率较低
function unique(arr){ for(var i = 0;i<arr.length;i++){ for(var j = i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splice(j,1); j--; } } } return arr; } console.log(unique(arr));
2、利用sort()方法进行排序
function unique(arr){ arr = arr.sort(); let result = [arr[0]]; for(var i = 1;i<arr.length;i++){ arr[i] !== arr[i-1] && result.push(arr[i]); } return result; } console.log(unique(arr));
3、利用ES6中Set特性,基于Set的成员具有唯一性,该方法效率较高
function unique(arr){ return Array.from(new Set(arr)); } console.log(unique(arr));
4、利用object属性不能相同特性去重
function unique(arr) { let result = []; let obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { result.push(arr[i]) obj[arr[i]] = 1 } else { obj[arr[i]]++ } } return result; } console.log(unique(arr));