總結(jié)一下數(shù)組去重的幾個方法

方法1:

關(guān)鍵詞:雙for循環(huán)、splice
思 路:將數(shù)組中的值一個個的比較,重復的就刪掉
復雜度:O(n^2)
function removeDup(array) {
    for (var i = array.length-1; i>=1; i--){
        for(var j = i-1; j>=0; j--){
            if(array[j] == array[i])
                array.splice(j,1);
        }
    }
    return array;
}

a = [1,1,2,2,2,3,3,4];
removeDup(a);
// [1, 2, 3, 4]

方法2:

關(guān)鍵詞 indexOf、push
思路:設置一個新數(shù)組,根據(jù)indexOf篩選原數(shù)組,只要新數(shù)組中沒有的,就push到新數(shù)組
復雜度:O(n)
function removeDup(array) {
    var newArray = [];
        for(var i = 0; i < array.length;i++){
            if(newArray.indexOf(array[i]) == -1 ) {
                newArray.push(array[i]);
            }
        }
    return newArray;
}

a = [1,1,2,2,2,3,3,4];
removeDup(a);
// [1, 2, 3, 4]

方法3:

關(guān)鍵詞 es6 Set、Array.from
思 路:
  1. Set函數(shù)可以接受一個數(shù)組(或類似數(shù)組的對象)作為參數(shù),用來初始化,其成員的值都是唯一的,沒有重復的值。
  2. Array.from()方法可以將類數(shù)組對象和可遍歷(iterable)的對象轉(zhuǎn)化為真正的數(shù)組。
function removeDup(a) {
  return Array.from(new Set(a));
}

a = [1,1,2,2,2,3,3,4];
removeDup(a);
// [1, 2, 3, 4]

總結(jié)

在前端面試中,數(shù)組去重還是一個出現(xiàn)頻率比較高的題目,算是一種基本能力吧。以上方法,在我看來,還是比較容易理解的,還有一些其他方法,正在整理中,會陸續(xù)更新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容