js数组去重
1 // 方法一 2 var arr = [12,3,3,4,55,6,55,12,76] 3 var newarr =[]; 4 for(var i=0;i<arr.length;i++){ 5 if(newarr.indexOf(arr[i])==-1){ 6 newarr.push(arr[i]) 7 } 8 } 9 console.log(newarr)
// 方法二 var arr = [12,3,3,4,55,6,55,12,76] for(var t=0;t<arr.length;t++){ for(var y=0;y<arr.length-1;y++){ if(arr[t]==arr[y]&&t!=y){ arr.splice(y,1) } } } console.log(arr)
1 // 方法三 2 var arr = [12,3,3,4,55,6,55,12,76] 3 var obj= {} 4 var new_arr =[] 5 for(var i=0;i<arr.length;i++){ 6 var k=arr[i]; 7 if(!obj[k]){ 8 obj[k]=true; 9 new_arr.push(k) 10 } 11 } 12 console.log(new_arr)
//方法四 es6 var arr =[1,2,2,3,3,3,4,5,5,6] console.log([...new Set(arr)])
console.log(Array.from(new Set(arr)))
1 方法五 利用indexOf() 2 使用indexOf(),可以判断一个数组中是否包含某个值,如果存在则返回该元素在数组中的位置,如果不存在则返回-1 3 4 functon unique(arr) { 5 let res = [] 6 for (let i = 0; i < arr.length; i++) { 7 if (res.indexOf(arr[i]) === -1) { 8 res.push(arr[i]) 9 } 10 } 11 return res 12 }
1 方法六 利用includes() 2 3 使用includes()方法也可以判断数组是否包含某个特定的元素,如果包含就返回true不包含就返回false。这和indexOf()方法有些类似,所以我们使用includes()进行数组去重和indexOf()的方法原理是一样的。 4 5 functon unique(arr) { 6 let res = [] 7 for (let i = 0; i < arr.length; i++) { 8 if (!res.includes(arr[i])) { 9 res.push(arr[i]) 10 } 11 } 12 return res 13 }
1 // 数组去重 filter 2 3 const arr1 = [22,1,44,32,32,22]; 4 const newArr = arr1.filter( function (item,index,arr1){ 5 console.log(arr1.indexOf(item) === index) 6 return arr1.indexOf(item) === index 7 }) 8 console.log(newArr)
// 方法7 利用reduce() var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var arring = names.reduce(function (arrcoult,currentval){ if(arrcoult.indexOf(currentval) === -1) { arrcoult.push(currentval) } return arrcoult },[]) console.log(arring)