青青草免费线看线看|啊在车上停不下来了|国产少女免费观看电视剧|仑乱88MAV|精品老司机在线观看视频|国产一区二区三区高清免费视频|在线观看免费777av

js數組去重最簡單的方法 js數組去重復的數據


無論是在面試還是在項目開發中,數組去重是經常碰到的問題 。今天老K為大家總結一下幾種好用的數組去重的方法 。
ES5的方法:
一、利用兩次for循環,然后splice去重(ES5中最常用)
function unique(arr){ if(toString.call(arr) !== "[object Array]"){ console.log(\\\'必須為數組\\\'); return ; } for(var i=0; i原理:雙層循環,外層循環元素,內層循環時比較值 。值相同時,則刪去這個值 。
優點:兼容強 。
缺點:不能去重NaN,object對象,數據量大時,效率不高 。
二、利用數組的排序方法sort去重
function unique(arr){ if (toString.call(arr) !== "[object Array]"){ console.log(\\\'必須為數組\\\'); return; } arr = arr.sort() var new_array = [arr[0]]; for(var i =1; i原理:利用sort()排序方法,然后根據排序后的結果進行遍歷及相鄰元素比對 。
優點:兼容強,邏輯簡單,容易理解 。
缺點:不能去重NaN,object對象 。
三、利用對象的屬性不能相同的特點進行去重,主要用hasOwnProperty
function unique(arr){ if (toString.call(arr) !== "[object Array]"){ console.log(\\\'必須為數組\\\'); return; } var obj = {}; var new_arr = []; for(var i = 0; i< arr.length; i){ if(!obj.hasOwnProperty(typeof arr[i] arr[i])){ new_arr.push(arr[i]); obj[typeof arr[i] arr[i]] = true; } } return new_arr}var arr = [2,2,\\\'a\\\',\\\'a\\\',true,true,\\\'true\\\',\\\'true\\\',false,false,\\\'false\\\',\\\'false\\\',undefined,undefined,null,null,NaN,NaN,\\\'NaN\\\',0,0,{},{}];unique(arr); //[2, "a", true, "true", false, "false", undefined, null, NaN, "NaN", 0, {…}] 原理:新建個空對象,空數組,遍歷目標數組 。如果元素不是對象的鍵,將元素加到新數組里,同時給鍵賦值 。如果已是對象的鍵,則忽略 。利用typeof 區分布爾值和”true”、“false“,NaN和“NaN“ 。
優點:可以將各種類型的數據去重 。
缺點:暫無 。
ES6的方法:
一、 利用 ES6的Set對象的特性去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數組\\\'); return; } return Array.from(new Set(arr)) //或者用擴展運算符轉化為數組 return [...new Set(arr)]};var arr = [2,2,\\\'a\\\',\\\'a\\\',true,true,\\\'true\\\',\\\'true\\\',false,false,\\\'false\\\',\\\'false\\\',undefined,undefined,null,null,NaN,NaN,\\\'NaN\\\',0,0,{},{}];unique(arr); // [2, "a", true, "true", false, "false", undefined, null, NaN, "NaN", 0, {...},{...}] 原理:利用ES6的Set對象自動排除重復項的特性,通過ES6的Array的from方法或者擴展運算符將Set對象轉化為數組 。
優點:不考慮兼容性,這種方法代碼最少 。
缺點:這種方法無法去重object對象,需要考慮兼容問題 。
二、利用ES6的數組方法indexOf去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數組\\\'); return; } var new_array = []; for(var i = 0; i

猜你喜歡