利用ES6 Set去重
function unique(arr) {return Array.from(new Set(arr))}
利用for嵌套for, 然后splice去重
function unique(arr) {for(let i = 0; i<arr.length; i++) {for(let j = i+1; j<arr.length; j++) {if(arr[i] == arr[j]){arr.splice(j,1);j--;}}}return arr;}
利用idexOf()去重
function unique1(arr){let array = [];for(let i = 0; i < arr.length; i++) {if(array.indexOf(arr[i]) === -1) {array.push(arr[i]);}}return array}function unique2(arr){let array = [];for(let i of arr){if(array.indexOf(i) == -1) {array.push(i);}}return array}
利用sort() 去重
function unique(arr) {arr = arr.sort();let array = [arr[0]];for(let i=1; i<arr.length; i++) {if(arr[i] != arr[i-1]) {array.push(arr[i]);}}return array;}
通过sort对数组进行排序,然后比较for循环内当前数和前一个的区别,如果不同,添加到新的数组中
利用Map数据结构去重
function unique(arr){let map = new Map();let array = new Array();for(let i of arr) {if(!map.has(i)){map.set(i, true);array.push(i);}}}
利用对象的属性不能相等去重
function unique(arr){let obj = {};let array = [];for(let i of arr){if(!obj[i]){array.push(i);obj[i] =1;} else {obj[i]++; // 可以获取每个数重复了几次}}return array;}
利用[…new Set(arr)]去重
[...new Set(arr)]
