数组去重的一些方法以及数组排序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <style> /* body{ cursor: pointer; } */ </style> <body> </body> </html> <script> //方法一: //编写一个函数 判断在数组中,是否存在某个值 fn(arr,n) function fnCz(arr,n){ for(var i = 0;i < arr.length;i++){ if(arr[i] == n){ return true; } } return false; } //数组去重,定义一个新数组,将已有数组的值拿出来,新数组中没有的就存进去 //可利用上面的函数 var arr = [1,2,4,6,2,1]; var brr = []; function ArrQc(){ for(var i = 0;i < arr.length;i++){ if(!fnCz(brr,arr[i])){ brr.push(arr[i]); } } return brr; } console.log(ArrQc()) //方法二:indexOf() //indexOf(n) 判断n在数组中是否存在,如果存在就返回这个数在数组中的下标,不存在就返回-1 function indexQc(){ for(var i = 0 ; i < arr.length;i++){ if(brr.indexOf(arr[i])== -1){ brr.push(arr[i]) } } return brr } console.log(indexQc()) //方法三: //数组排序: //冒泡排序:相邻两个数比较 ,大数下沉,小数上浮; // [2,3,5,3,2,7,4,8] var wyl = [2,3,5,3,2,7,4,8] function MpPx(){ var b = 0; //用于交换的一个数 for(var i = 0 ;i < wyl.length -1; i++){//轮数 每一轮都得到一个当前的最大数,第一轮将最大的数交换到最后,第二轮再类推,先1,2比较,交换完毕后,2,3比较,依次类推;而每一轮的次数等于原本的数减1 轮数 和次数 有关; 总轮数是数的长度减1,而次数是数的长度减当前的轮数 也就是长度减1减i for(var j = 0;j < wyl.length - 1 - i;j++){ if(wyl[j] > wyl[j+1]){ // b = wyl[j]; // wyl[j] = wyl[j+1]; // wyl[j+1] = b; //使用解构赋值 [wyl[j],wyl[j+1]] = [wyl[j+1],wyl[j]] } } } return wyl } console.log(MpPx()); //sort()排序 无参数时默认按照 字符 进行升序排序,对数值进行排序时需要有参数;参数为匿名函数 // 数组名.sort( function(a,b){ return a-b; 为升序 return b-a;为降序}) console.log(wyl.sort(function(a,b){ return b-a; })) //选择排序:选择其中一个数 和其他的数作比较 轮数,次数 每一轮得到一个最小值 var xl = [2,3,2,4,6,4,3] function XzPx(){ var a = 0; for(var i = 0 ;i < xl.length-1; i++){ for(var j = i+1;j <=xl.length-1;j++){ if(xl[i] > xl[j]){ a = xl[j]; xl[j] = xl[i]; xl[i] = a; } } } return xl; } console.log(XzPx()) //将数组按顺序排列,遍历数组,相邻的两个值作比较;定义一个新数组,如果前一个数不等于后一个数,将前一个数存到新数组里 var b = [1,3,3,4,5,8,8,9]; var c = []; function noRepeat(){ for(var i = 0; i < b.length; i++){ if(b[i] !== b[i+1]){ c.push(b[i]); } } return c; } console.log(noRepeat()) </script>