js陣列去除重複資料

2022-04-12 07:02:23 字數 1237 閱讀 9361

1、遍歷陣列法

建立乙個新陣列,然後迴圈遍歷要去重的陣列,每次判斷新陣列不包含舊陣列的值時(新陣列用indexof方法檢索舊陣列的值返回結果等於-1)將該值加入新陣列。

let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];

let newarr = unique(oldarr);

function unique(arr)

}return hash;

}2、陣列下標判斷法

與第一種方法類似,先遍歷,然後判斷當前陣列的第i項在陣列中第一次出現的位置是否與i相等,不是則說明重複,忽略,不加入新陣列。

let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];

let newarr = unique(oldarr);

function unique(arr)

}return hash;

}3、排序後判斷

對陣列進行排序後,將新陣列的最後乙個值與舊陣列的當前值進行比較,如果相等說明重複,不相等則新增至新陣列。

function unique(arr)

}return hash;

}4、es6的set去重

set型別:es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

set本身是乙個建構函式,用來生成set資料結構。

所以我們可以直接用set來處理陣列,但是處理完後可以用array.form方法或者擴充套件函式把它重新轉回陣列,不然得到的是set型別,對於一些有型別判斷的地方是不通過的。

4.1、 array.from轉換set型別為array

let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];

let newarr = new set(oldarr);

console.log(newarr);

console.log(newarr instanceof array); // 此時是set型別,不是array

newarr = array.from(newarr);

console.log(newarr instanceof array);

4.2、 擴充套件函式轉換set型別為array

let oldarr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];

let newarr = [...new set(oldarr)]; // 這個方法最簡便

js陣列去除重複資料

建立乙個新陣列,然後迴圈遍歷要去重的陣列,每次判斷新陣列不包含舊陣列的值時 新陣列用indexof方法檢索舊陣列的值返回結果等於 1 將該值加入新陣列。let oldarr 1 2,3 4,5 5,6 7,8 2,3 let newarr unique oldarr function unique ...

去除陣列重複資料

原始陣列 1,2,1,2,3,4,5 結果陣列 1,2,3,4,5 函式 function removesame arr for var i 0 i 4.過程 1 第一輪 i 0 i 7 i j 1 j 7 i 0,j 1,1 2不等,j 1.i 0 j 2,1 1相等 去除第乙個 1,陣列長度變為...

去除重複數

這是一道外企演算法的面試題,前提是不允許使用util包之外的類,即任何集合類都不允許使用。寫出的演算法效率越高,此題得分越高,大家可以試一下。題目是輸入一串已經排序好的陣列,輸出消除重複數之後的陣列。如 輸入 輸出 消除重複數 已經排序好的陣列 author fangtengfei date 201...