数组去重;

数组去重

/**
 * 数组去重
 */

 var arrT = [1,2,2,12,4,9,9,4,7,8,7,8,0,0];


 function unique_1(_arr){

    var arr =[],flag;
    
    for(var i = 0;i < _arr.length; i++){
        flag = true;
        for(var j = 0;j < arr.length; j++){

            if(arr[j] === _arr[i]){
                flag = false;
                break;
            }
        }

        if(flag){
            arr.push(_arr[i]);
        }
    }
    return arr.sort();

 }

 function unique_2(_arr){

    var arr =[],flag;
    
    for(var i = 0;i < _arr.length; i++){
        flag = true;
        for(var j = i+1;j < _arr.length; j++){

            if(_arr[j] === _arr[i]){
                flag = false;
                break;
            }
        }

        if(flag){
            arr.push(_arr[i]);
        }
    }
    return arr.sort();
}
/**
 * filter 返回新数据 ,return true ;加入否则丢弃
 * indexOf 找出数组某一项,返回index否则为-1;
 *  当_arr.indexOf(item) === index 则代表此项第一次出现;如果不相等 则代表此item已经出现过了  丢弃
 * @param {*} _arr 
 */
function unique_3(_arr){

    return _arr.filter(function(item,index){

        return _arr.indexOf(item) === index;
    })
     
}
function unique_4(_arr){

    var arr = [];
    _arr.forEach(function(item,index,self){

        if(arr.indexOf(item) === -1){
            arr.push(item);
        }
    });
    return arr;
}
/**
 * es6 includes 判断数组有值,返回Boolean
 * 
 * var c  = [NaN];时,indexOf 返回总是-1  ;
 * 而 includes 可以判断;
 * 
 * var a  =new Array(4) 当值为空时;;
 * 
 * includes 认为 a.includes(undefined)= true
 * a.indexOf(undefined) 为 -1  不能判断
 * @param {*} _arr 
 */
function unique_5(_arr){

    var arr = [];
    _arr.forEach(function(item,index,self){

        if(!arr.includes(item)){
            arr.push(item);
        }
    });
    return arr;
}
/**
 * array.reduce(function(total, currentValue, currentIndex, arr), initialValue);
 * function(total,currentValue, index,arr)	必需。用于执行每个数组元素的函数。
函数参数:
参数	描述
total	必需。初始值, 或者计算结束后的返回值。
currentValue	必需。当前元素
currentIndex	可选。当前元素的索引
arr	可选。当前元素所属的数组对象。
initialValue	可选。传递给函数的初始值
 * @param {*} _arr 
 */
function unique_6(_arr){

    return _arr.reduce(function(prev,item,index,self){

        if(!prev.includes(item)){
            prev.push(item)
        }else{
        }
        return prev;

    },[])
}
/**
 * Map
 * @param {*} _arr 
 */
function unique_7(_arr){

    var  map = new Map(),
        arr = [];
    _arr.forEach(function(item,index,self){

        if(!map.get(item)){
            map.set(item,1);
            arr.push(item);
        }
    })

    return arr;
}

/**
 * Set
 * @param {*} _arr 
 */
function unique_8(_arr){

    return Array.from(new Set(_arr));
    
}
posted @ 2020-06-16 20:25  古月大叔  阅读(167)  评论(0编辑  收藏  举报