数组去重
- 冒泡法
//数组去重
//法1 冒泡法
var arr = [20, 25, 88, 66, 90, 25, 88, 66];
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;
}
}
}
// 得到从小到大的冒泡排序
console.log(arr);
//在判断相邻两个元素之间是否相等 如果不等 就添加到新数组中
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != arr[i + 1]) {
// 追加到新数组中 两种方式都可以
// newArr[newArr.length] = arr[i];
newArr.push(arr[i]);
}
}
console.log(newArr);
- 开关思想
//数组去重
//法2 开关思想
var arr = [20, 25, 88, 66, 90, 25, 88, 66];
//声明一个新数组 存放去重后的元素
var newArr = [];
for (var i = 0; i < arr.length; i++) {
// 判断新数组中是否存在一样的元素 通过开关思想
//提出假设 假设不在
var buZai = true;
for (var j = 0; j < newArr.length; j++) {
// 推翻假设
if (arr[i] == newArr[j]) {
buZai = false;
//存在一样的元素 结束循环
break;
}
}
if (buZai) {
// 追加到新数组的两种方式都可以
// newArr[newArr.length] = arr[i];
newArr.push(arr[i]);
}
}
console.log(newArr);
- indexOf检测
//数组去重
//法3 indexOf检测
var arr = [20, 25, 88, 66, 90, 25, 88, 66];
//声明一个新数组 存放去重后的元素
var newArr = [];
//遍历arr
for (var i = 0; i < arr.length; i++) {
// indexOf(元素) 如果存在会返回下标 如果不存在会返回-1
if (newArr.indexOf(arr[i]) == -1) {
// 追加到新数组的两种方式都可以
// newArr[newArr.length] = arr[i];
newArr.push(arr[i])
}
}
console.log(newArr);
- 对象法
//数组去重
//法3 indexOf检测
var arr = [20, 25, 88, 66, 90, 25, 88, 66];
//声明一个新数组 存放去重后的元素
var newArr = [];
//声明一个空对象 用来检测元素是否重复
var obj = {};
//遍历arr
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] == undefined) {
// 追加到新数组的两种方式都可以
// newArr[newArr.length] = arr[i];
newArr.push(arr[i]);
obj[arr[i]] = 1;
}
}
console.log(newArr);