javascript實現數組去重

來源:互聯網
上載者:User

標籤:選擇   重複   導致   排序   結果   常用   als   for   div   

數組去重即去掉數組中重複的元素,是web前端工作者在面試過程中和工作中經常會遇到的一個問題,相信一般的方法大家都會,只不過會存在效率差異問題,下面我就來說說我們常用的幾種數組去重的方法!

方法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,思路:利用對象的特性來判斷新數組中是否已經有該值(推薦使用)

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,如果不是,則代表不是第一次出現(推薦使用);

 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;    }

 

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

 

javascript實現數組去重

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.