js實現數組去重

數組去重即去掉數組中重複的元素,是web前端工做者在面試過程當中和工做中常常會遇到的一個問題,相信通常的方法你們都會,只不過會存在效率差別問題,下面我就來講說咱們經常使用的幾種數組去重的方法!javascript

方法1,思路:經過雙重循環,每次檢測新數組裏面是否有該元素,沒有就加進去,改方法思路簡單,但當數組長度較長時,會很是影響性能!(不推薦使用)
function deleteRepeat1(arr) {
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            let has = false;
            for (let j = 0; j < newArr.length; j++) {
                if (arr[i] === newArr[j]) {
                    has = true;
                }
            }
            if (!has) {
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }

 

方法2,思路:先將數組元素進行排序,而後進行循環,將每一項與新數組的最後一項進行比較,若是不相等就添加進去,由於是通過排序的,因此只用和最後一項進行比較(由於這個結果會致使數組的順序改變,因此也不推薦使用);前端

function deleteRepeat2(arr) {
        let arr2 = arr.sort(function (a, b) {
            return a - b;
        });
        let newArr = [arr2[0]];
        for (var i = 0; i < arr2.length; i++) {
            if (arr2[i] !== newArr[newArr.length - 1]) {
                newArr.push(arr2[i])
            }
        }
        return newArr
    }

方法3,思路:利用對象的特性來判斷新數組中是否已經有該值(推薦使用)java

function deleteRepeat3(arr) {
        let obj = {}, newArr = [];
        for (let i = 0; i < arr.length; i++) {
            if (!obj[arr[i]]) {
                newArr.push(arr[i]);
                obj[arr[i]] = 1;
            }
        }
        return newArr;
    }

方法4,思路:循環遍歷每一項,而後判斷每一項的值在數組中的位置是否爲當前循環的index,若是不是,則表明不是第一次出現(推薦使用);web

 function deleteRepeat4(arr) {
        let newArr = [];
        for (let i = 0; i < arr.length; i++) {
            if (i == arr.indexOf(arr[i])) {
                newArr.push(arr[i])
            }
        }
        return newArr;
    }

 

以上就是我總結的四種數組去重的方法,用戶能夠根據實際業務需求進行選擇使用!面試

相關文章
相關標籤/搜索