1、双层循环去重
先定义原始数组第一个元素的数组,遍历原始数组,新数组与原始数组进行比较
如果不重复就添加到新数组中,最后返回新数组res
(不好的地方:如果数组很大,这样会消耗内存)
let arr = [0,2,3,4,4,0,2]; function unique1(ary) { let res = [ary[0]]; for(let i=0;i<ary.length;i++){ let flag = true; for(let j=0;j<res.length;j++){ if(arr[i] === res[j]){ flag = false; break; } } if(flag)res.push(arr[i]); } return res; } console.log(unique1(arr));
2、使用indexOf方法去重
indexOf()方法可返回某个指定的元素在数组中首次出现的位置
首先定义一个空数组res,然后调用indexOf方法对原来的数组进行遍历判断,
如果元素不在res中,则将其push进res中,最后将res返回即可获得去重的数组
let bosh = [1,2,3,3,2,1,1,2,3,4,5,6,7]; function unique2(a){ let temp = []; for(let i=0;i<a.length;i++){ //如果没有找到首次出现的位置代表这个数不重复 if(temp.indexOf(a[i]) === -1){ temp.push(a[i]); } } return temp; } console.log(unique2(bosh));
3、相邻元素去重(排序后去重)
首先调用了数组的排序方法sort(),然后根据排序后的结果进行遍历及相邻元素对比
如果相等则跳过改元素,直到遍历结束
let adjoin = [64,5,4,2,4,5,2]; function unique3(arr){ arr = arr.sort(); let empt = []; for(let i=0;i<arr.length;i++){ if(arr[i] !== arr[i-1]){ empt.push(arr[i]); } } return empt; } console.log(unique3(adjoin));