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

js數(shù)組去重最簡(jiǎn)單的方法 js數(shù)組去重復(fù)的數(shù)據(jù)( 二 )

< arr.length; i){ if (new_array.indexOf(arr[i]) === -1){ new_array.push(arr[i]) } } return new_array;};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, "NaN", 0, {…}, {…}] 原理:新建一個(gè)空的結(jié)果數(shù)組,for 循環(huán)原數(shù)組,利用indexOf方法判斷結(jié)果數(shù)組是否存在當(dāng)前元素,如果有相同的值則跳過(guò),不相同則push進(jìn)數(shù)組 。
優(yōu)點(diǎn):利用ES6數(shù)組的新方法,邏輯簡(jiǎn)單,容易理解 。
缺點(diǎn):不能去重NaN,object對(duì)象,需要考慮兼容問(wèn)題 。
三、利用ES6的數(shù)組方法includes去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數(shù)組\\\'); return; } var new_array = []; for(var i = 0; i< arr.length; i){ if ( !new_array.includes(arr[i]) ){ new_array.push(arr[i])} } return new_array;};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, {…}, {…}] 原理:創(chuàng)建個(gè)新的空數(shù)組new_array,遍歷目標(biāo)數(shù)組,利用includes方法判斷目標(biāo)數(shù)組的元素是否在新數(shù)組里,如果沒(méi)有,將元素添加到新數(shù)組中,如果有則忽略 。
優(yōu)點(diǎn):利用ES6數(shù)組的新方法,邏輯簡(jiǎn)單,容易理解 。
缺點(diǎn):不能去重object對(duì)象,需要考慮兼容性 。
四、利用ES6的filter和indexOf去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數(shù)組\\\'); return; } return arr.filter(function(item, index, arr){ return arr.indexOf(item, 0) === index; });}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", 0, {…}, {…}] 原理:給filter一個(gè)過(guò)濾條件,獲取元素在原始數(shù)組的第一個(gè)索引,如果等于當(dāng)前索引值,返回當(dāng)前元素 。
優(yōu)點(diǎn):利用ES6數(shù)組的新方法,邏輯簡(jiǎn)單,容易理解 。
缺點(diǎn):不能去重object對(duì)象和NaN,需要考慮兼容性 。
五、利用ES6的Map數(shù)據(jù)格式去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數(shù)組\\\'); return; } let map = new Map(); let new_array = new Array(); for(let i = 0; i原理:創(chuàng)建一個(gè)新數(shù)組,遍歷目標(biāo)數(shù)組,如果元素沒(méi)有在Map里,則添加到新數(shù)組 。
優(yōu)點(diǎn):利用ES6數(shù)組的新數(shù)據(jù)結(jié)構(gòu),邏輯簡(jiǎn)單,容易理解 。
缺點(diǎn):不能去重object對(duì)象,需要考慮兼容性 。
六、利用ES6的reduce和includes去重
function unique(arr){ if(!Array.isArray(arr)){ console.log(\\\'必須為數(shù)組\\\'); return; } return arr.reduce( (prev, cur) => prev.includes(cur) ? prev : [...prev,cur], []);}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, {…}, {…}] 原理:創(chuàng)建一個(gè)新數(shù)組,遍歷目標(biāo)數(shù)組,如果元素沒(méi)有在Map里,則添加到新數(shù)組 。

猜你喜歡