• js数组去重


    1.ES6 Set

        let arr = [1,2,3,3,"a","a","1"]
        arr = [...new Set(arr)] 
        console.log(arr)
        // [1, 2, 3, "a", "1"]

    2.indexOf

        let arr = [1,2,3,3,"a","a","1"]
    
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            let temp = []; 
            for(let i = 0; i < array.length; i++){
                if(temp.indexOf(array[i]) == -1){
                    temp.push(array[i]);
                }
            }
            return temp;
        }
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

    3.sort

        let arr = [1,2,3,3,"a","a","1"]
    
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            array.sort();
            let temp = [array[0]]; 
            for(let i = 0; i < array.length; i++){
                if(array[i] !== temp[temp.length-1]){
                    temp.push(array[i]);
                }
            }
            return temp;
        }
        
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

    4.for循环

        let arr = [1,2,3,3,"a","a","1"]
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            let temp = [];
            for(let i = 0; i < array.length; i++) {
                for(let j = i + 1; j <array.length; j++){
                    if (array[i] === array[j]){
                        i++;
                        j = i;
                    }
                }
                temp.push(array[i]);
            }
            return temp;
        }
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

    5.includes

        let arr = [1,2,3,3,"a","a","1"]
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            let temp = [];
            for(let i = 0; i < array.length; i++) {
                if(!temp.includes(array[i])){
                     temp.push(array[i]);
                }
               
            }
            return temp;
        }
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

    6.对象

        let arr = [1,2,3,3,"a","a","1"]
        // 判断是否为js对象键时,会自动对传入的键执行“toString()”
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            let temp = {}, temp1 = [],  val, type;
            for (let i = 0; i < array.length; i++) {
                val = array[i];
                type = typeof val;
                if (!temp[val]) {
                    temp[val] = [type];
                    temp1.push(val);
                } else if (temp[val].indexOf(type) < 0) {
                    temp[val].push(type);
                    temp1.push(val);
                }
            }
            return temp1;
        }
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

    7.ndexOf与下标

        let arr = [1,2,3,3,"a","a","1"]
        function unique(array){
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            let temp = [];
            for(let i = 0; i < array.length; i++) {
                if(array.indexOf(array[i]) == i){
                    temp.push(array[i])
                }
            }
            return temp;
        }
        console.log(unique(arr))
        // [1, 2, 3, "a", "1"]

     

  • 相关阅读:
    运维:生产日志重复打印了,赶紧来看看~
    就这样,我走过了程序员的前五年。一路风雨泥泞,前方阳光正好。
    一个排序引发的BUG
    曝光一个网站,我周末就耗在上面了。
    我不服!这开源项目居然才888个星!?
    知乎的一次29.7元的咨询
    面试官:啥是请求重放呀?
    414天前,我以为这是编程玄学...
    老爷子这代码,看跪了!
    面试官一个线程池问题把我问懵逼了。
  • 原文地址:https://www.cnblogs.com/tylz/p/11350961.html
Copyright © 2020-2023  润新知