记录数组去重的几种方法

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));

猜你喜欢

转载自www.cnblogs.com/theblogs/p/10640236.html