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;
}
}
}