標籤:選擇 重複 導致 排序 結果 常用 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實現數組去重