查找数组是否有重复元素

1,172 阅读1分钟

记录一下自己工作中的一些方法,好记性不如烂笔头,之后工作用到可以随时翻出来,自己动手实现一遍,更能加深印象!


方法1.

    function isUniqueArr(arrs) {
        let arrToStr = arrs.join(",") + ",";
        let arrLen = arrs.length;
        for(let i = 0; i < arrlen; i++) {
            //ps:替换为空,还能发现元素,证明有重复元素
            if(arrToStr.replace(arrs[i] + ",", "").indexOf(arrs[i] + ",") > -1) {
                console.log("数组中有重复元素:" + arrs[i]);
                return false;    
            }
        }
        return true;
    }

方法2.

    let arrs = new Array("111", "22", "33", "111");
    //ps:适合数值,字符串数值类型
    function isUniqueArrSecond(arrs) {
        let sortArrs = arrs.slice().sort();
        let arrLen = sortArrs.length;
        for(let i = 0; i < arrLen; i++) {
            if(sortArrs[i] === sortArrs[i+1]) {
                console.log("数组中有重复元素:" + arrs[i]);
                return false;   
            }
        }
        return true
    }

方法3.

    function isUniqueArrThird(arrs) {
        let hash = {};
        let arrLen = arrs.length;
        for(let i in arrs) {
            if(hash[arrs[i]]) {
                return false;
            }
            hash[arrs[i]] = true;
        }
        return true;
    }