js陣列去重,除重的方式(儘可能多)

程式碼小戳發表於2020-10-07

測試陣列:

 let arr = [3, 1, 0, 0, 1, 1, 2, 3, 4, 2, 1, 2, 4, 2, 3, 0, 2, 4, 2, 1, 4, 5, 5, 5, 3];

先來幾個簡單的

//陣列去重0
    function arrayUniq0(arr) {
        let result = [...new Set(arr)]
        return result;
    }
    console.log("陣列除重0:" + arrayUniq0(arr));
 //陣列去重1
    function arrayUniq1(arr) {
        let result = arr.filter((item, index, array) => {
            return array.lastIndexOf(item) == index
        })
        return result;
    }
    console.log("陣列除重1:" + arrayUniq1(arr));
    //陣列去重2
    function arrayUniq2(arr) {
        let result = [];
        arr.forEach(element => {
            result.indexOf(element) == -1 && result.push(element)
        });
        return result;
    }
    console.log("陣列除重2:" + arrayUniq2(arr));
    //陣列去重3
    function arrayUniq3(arr) {
        let obj = {};
        var resultArr = [];
        for (let index = 0; index < arr.length; index++) {
            if (!(arr[index] in obj)) {
                obj[arr[index]] = 0;
                resultArr.push(arr[index]);
            }
        }
        return resultArr;
    }
    console.log("陣列除重3:" + arrayUniq3(arr));

雙層迴圈不能少

//陣列去重4
    function arrayUniq4(arr) {
        var resultArr = [];
        for (let index = 0; index < arr.length; index++) {
            let j = 0;
            for (let i = 0; i < arr.length; i++) {
                if (arr[index] == arr[i]) {
                    j++;
                    if (j > 1) {
                        delete arr[i];
                    }
                }
            }
            if (arr[index] != undefined) {
                resultArr.push(arr[index]);
            }
        }
        return resultArr;
    }
    console.log("陣列除重4:" + arrayUniq3(arr));
    // for forEach for...in.. 兩兩組合 沒意思不寫了
    // for forEach for...in.. 替換除重1的外部迴圈
    // for forEach for...in.. 替換除重2的外部迴圈

替換一下1方法

 
    //陣列去重5
    function arrayUniq5(arr) {
        let result = [].filter.call(arr, (item, index, array) => {
            return array.lastIndexOf(item) == index
        })
        return result;
    }
    console.log("陣列除重5:" + arrayUniq5(arr));
   
    //陣列去重8
    function arrayUniq8(arr) {
        let result = [].filter.bind(arr)((item, index, array) => {
            return array.lastIndexOf(item) == index
        })
        return result;
    }
    console.log("陣列除重8:" + arrayUniq8(arr));
    //陣列去重9
    function arrayUniq9(arr) {
        let result = [].filter.apply(arr, [(item, index, array) => {
            return array.lastIndexOf(item) == index
        }])
        return result;
    }
    console.log("陣列除重9:" + arrayUniq9(arr));
    // 按照 5,8,9 進行替換  你懂得有多少種

替換下外部

   //陣列去重6
    function arrayUniq6(arr) {
        let obj = {};
        var resultArr = [];
        [].forEach.call(arr, element => {
            if (!(element in obj)) {
                obj[element] = 0;
                resultArr.push(element);
            }
        })
        return resultArr;
    }
    console.log("陣列除重6:" + arrayUniq6(arr));
    //陣列去重7
    function arrayUniq7(arr) {
        let obj = {};
        var resultArr = [];
        [].forEach.bind(arr, element => {
            if (!(element in obj)) {
                obj[element] = 0;
                resultArr.push(element);
            }
        })()
        return resultArr;
    }
    console.log("陣列除重7:" + arrayUniq7(arr));

由此推算 … 你懂得

相關文章