1. 数组去重的几种方式
var a = [1,1,2,2,33,4,5,6,1,2]1.最简单的var s = Array.from(new Set(a))//上下结果一样,记得s要大写Array.from(new Set(a))或者[...new Set(a)]2.用一个for循环var a = [1,1,2,2,33,4,5,6,1,2]var s = []for(item of a){if(!s.includes(item)){s.push(item);}}3.用原生js双重for循环var a = [1, 1, 2, 2, 33, 4, 5, 6, 1, 2]for(var i = 0;i<a.length;i++){for (let j = i+1; j < a.length; j++) {if (a[i] === a[j]) {a.splice(j,1)j--;//需要--不然检查不到删除后补上的数}}}4.用map.可以解决数组去重找到数组中重复的数,找到数组中第一个非重复的数function removal(arr){let hashMap = new Map();let result = [];for(item of arr){if(hashMap.has(item)){hashMap.set(item,true);//将重复的键名的值设为true即为重复了}else{hashMap.set(item,false);//将第一次添加的键名的值设为false即为没重复了result.push(item);//将没重复的添加进数组}}return result;}let arr = [1,1,1,1,2,2,2,3,4,'a','b','a']console.log(removal(arr));//用来查找储存重复的第一个元素,想找所有就push数组再返回for( let [key,value] of hashMap.entries()){if(value === false){return key}}
2. 冒泡排序
冒泡排序本质上就是使用数组内元素两两比对,前面大的往后移动,前面小就不变,第一次比较完最大的一个在最后,所以最后一个不需要比较了。
//先前那一种是把最小的数比较出来放在第一个
var a = [1,9,3,4,2,70,432,123,5,7,22,12]for (let i = 0; i < a.length-1; i++) {//外层控制轮数for (let j = 0; j < a.length-1-i; j++) {//内层控制比较次数if (a[j]>a[j+1]) {let c = 0;c=a[j];a[j]=a[j+1];a[j+1]=c;}}}
