1.冒泡法
1.1 先对数组排序arr
1.2 声明新数组存储去重后的数组newArr
1.3 遍历arr,检查每一个元素与相邻的元素是否相等。相等,说明重复。 不等,没有重复就添加
//1.1 先对数组排序arr
for(var i = 0;i<arr.length-1;i++){
for(var j = 0;j<arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//1.2 声明新数组存储去重后的数组newArr
var newArr = [];
//1.3 遍历arr,检查每一个元素与相邻的元素是否相等。相等,说明重复。 不等,没有重复就添加
for(var i = 0;i<arr.length;i++){
if(arr[i] != arr[i+1]){
newArr[newArr.length] = arr[i];
}
};
console.log(newArr);
2.开关思想
1.声明newArr存储去重后的数组
2.遍历arr,检查arr[i]在不在
3.根据结果: 在:不添加 不在:添加
//1.声明newArr存储去重后的数组
var newArr = [];
// 遍历arr,检查arr[i]在不在
for(var i = 0;i<arr.length;i++){
var buZai = true;
// b. 验证假设
// c. 根据开关结果实现需求
for(var j = 0;j < newArr.length;j++){
if(arr[i] == newArr[j]){
buZai = false;
}
};
if(buZai){
//没有重复
newArr[newArr.length] = arr[i];
}
};
3.indexOf方法
如果indexof检查的结果为-1,说明不在新的数组中
var arr = [20,66,88,99,100,55,66,88,20];
//声明空数组存储去重后的数组
var newArr = [];
//遍历arr,检查在不在newArr中
for(var i = 0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){//不在
newArr.push(arr[i]);
};
};
console.log(newArr);
4.对象法
//4.1 声明空数组存储去重后的数组 声明空对象用于检查元素是否重复
var newArr = [];
var obj = {};
//4.2 遍历arr
for(var i = 0;i<arr.length;i++){
//如果这个对象以前没有个属性名(元素),没有重复。 有则重复
if(obj[arr[i]] == undefined){//没有重复
newArr.push(arr[i]);//对这个属性随意赋值,下一次是相同属性就不会取出undefined
obj[arr[i]] = 1;
};
};
console.log(newArr);