数组去重的方法
方法一 利用set对象
function unique(arr){ let arr1=Array.from(new Set(arr)) return arr1; } let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] console.log(unique(arr)) // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]
想要更加了解set对象,请阅读 https://www.cnblogs.com/Jeanchjy/p/13086950.html
方法二 利用includes去重,includes方法是检查数组是否有某个值存在
function unique(arr){ let arr2=[] for(let i=0;i<arr.length;i++){ if(!arr2.includes(arr[i])){ arr2.push(arr[i]) } } return arr2; } let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] console.log(unique(arr)) // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]
方法三 利用indexOf与lastIndexOf查询,在利用splice去重
function unique(arr){ for(let i=0;i<arr.length;i++){ let first=arr.indexOf(arr[i]) //从左往右查询 let last=arr.lastIndexOf(arr[i]) //从右往左查询 if(first!==last){ arr.splice(last,1) } } return arr } let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] console.log(unique(arr)) //[1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN]
方法四 利用indexOf
function unique(arr){ let arr3=[] for(let i=0;i<arr.length;i++){ if(arr3.indexOf(arr[i])===-1){ arr3.push(arr[i]) } } return arr3 } let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] console.log(arr.indexOf(NaN)) //-1 console.log(unique(arr)) // [1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN, NaN]
NaN没法去重,由于arr.indexOf(NaN)的索引值为-1,题目中表示不存在的意思。我们是新数组arr3是利用indexOf为-1去判断值存不存在,不存在就插入arr3数组
方法五 利用filter
let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] let arr5=arr.filter((item,index,array)=>{ return array.indexOf(item)===index }) // 会把所有的NaN去掉, 因为查询NaN的索引为-1 console.log(arr5) //[1, 2, 3, "a", "b", "c", 4, false, undefined, null]
方法六 利用for嵌套循环,在用splice去重
function unique(arr){ for(let i=0;i<arr.length;i++){ for(let j=i+1;j<arr.length;j++){ if(arr[i]===arr[j]){ arr.splice(j,1); j--; } } } return arr } console.log(NaN===NaN) //false let arr=[1,2,3,1,2,2,'a','b','c','c','a',4 ,4,false,false, undefined,undefined, null,null, NaN, NaN,] console.log(unique(arr)) //[1, 2, 3, "a", "b", "c", 4, false, undefined, null, NaN, NaN] </script>