利用ES6的 set进行去重
const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]console.log([...new Set(numbers)])
利用for循环嵌套,splice去重
优点:可区分“1” 和 1
缺点 : 对象不可以去重 因为对象不可以用来比较 NaN不可以去重
let 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 = j-1;}}}return arr}
利用indexOf去重
优点:可区分”1” 和 1 缺点:NaN和对象 不可去重
//IndexOf()从字符串中第一个字符开始检索,返回值都是字符串中字符所在的下标,如果没有找到则返回-1let unique = arr =>{let array = [];for(let i =0;i<arr.length;i++){if(array.indexOf(arr[i]) === -1){array.push(arr[i])}}return array}
利用sort( )去重
优点:NaN可去重 缺点:对象不可去重
//利用sort进行排序 然后进行去重let 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}
使用Map数据结构去重
优点:可以实现NaN去重 缺点:对象不可去重
//mapObj.set(key, value)//key:必需,新元素的键 value:必需,要添加的元素的值let unique = arr =>{let map = new Map()let array = new Array()for(let i=0;i<arr.length;i++){if(map.has(arr[i])){map.set(arr[i],true)}else{map.set(arr[i],false)array.push(arr[i])}}return array}
