数组去重

369 阅读1分钟

1.哈希思想

    var arr = [1,2,3,4,2,2,4];
    //把数组各项当做对象的属性
    //若对象中没有属性,就添加到新数组中
    //若有该属性,设置该属性值为true
    function hash(arr) {
        var obj = {};
        var arr1 = [];
        for (let item of arr){
            if (!obj[item]){
                arr1.push(item);
                obj[item] = true;

            }
        }
        return arr1;
    }
    console.log(hash(arr));

2. ES6 Set集合,值唯一,不重复

    function set(arr) {
        //2.1
        /*var arr1 = new Set(arr);//Set(7)
        return [...arr1];*/
        //2.2
       return  Array.from(new Set([...arr]));
    }

    console.log(set(arr));

3.ES6 Array.filter():不会改变原数组

    //indexOf返回元素出现第一次的索引位置,若不存在返回-1
    function filter(arr) {
        return arr.filter((elem,index)=>{
         //若indexOf返回的索引与当前元素的index不匹配返回false说明已经出现过,过滤。若返回true,保留
            return arr.indexOf(elem) == index;
        })
    }
    console.log(filter(arr));