1.排序法去重
var arr = [20, 45, 70, 99, 90, 85, 50, 20, 90, 60, true, false, 1, 0];
// (1)对数组进行排序
arr.sort(function (a, b) {
return a - b;
});
// (2)声明一个新数组用于存放去重后的数组
var newArr = [];
// (3)遍历arr,判断arr[i]与arr[i+1]是否一致
for (var i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
newArr.push(arr[i])
}
};
console.log(arr);//[false, 0, true, 1, 20, 20, 45, 50, 60, 70, 85, 90, 90, 99]
console.log(newArr);//[false, 0, true, 1, 20, 45, 50, 60, 70, 85, 90, 99]
2.开关法去重
var arr = [20, 45, 70, 99, 90, 85, 50, 20, 90, 60];
// (1)声明一个空数组用于存放去重后的数组
var newArr = [];
// (2)遍历arr,检查arr[i]是否存在于newArr中
for (var i = 0; i < arr.length; i++) {
// 设置一个变量buzai,当buzai为true时,将arr[i]存放到newArr中,否则不存放
var buzai = true;
for (var j = 0; j < newArr.length; j++) {
if (arr[i] == newArr[j]) {//在,不能添加将buzai置为false,结束循环
buzai = false;
break;
};
};
if (buzai) {
newArr.push(arr[i]);
};
};
console.log(arr);//[20, 45, 70, 99, 90, 85, 50, 20, 90, 60]
console.log(newArr);//[20, 45, 70, 99, 90, 85, 50, 60]
3.indexOf索引法去重
var arr = [20, 45, 70, 99, 90, 85, 50, 20, 90, 60];
// (1)声明一个空数组用于存放去重后的数组
var newArr = [];
// (2)遍历arr判断arr[i]是否存在于newArr中
for (var i = 0; i < arr.length; i++) {
// (3)检查是否在newArr中
if (newArr.indexOf(arr[i]) == -1) {//不在
newArr.push(arr[i]);
};
};
console.log(arr);//[20, 45, 70, 99, 90, 85, 50, 20, 90, 60]
console.log(newArr);//[20, 45, 70, 99, 90, 85, 50, 60]
4.对象法去重
// 对象法去重的核心思路:对象的属性名不能重复
var arr = [20, 45, 70, 99, 90, 85, 50, 20, 90, 60];
var obj = {};//检测是否有重复元素
var newArr = [];//存储去重后的新数组
for (var i = 0; i < arr.length; i++) {
// 将数组元素作为对象的属性名
if (obj[arr[i]] == undefined) {//没有重复
newArr.push(arr[i]);
obj[arr[i]] = 1;//下一次再重复该元素,不在是undefined
};
};
console.log(arr);//[20, 45, 70, 99, 90, 85, 50, 20, 90, 60]
console.log(newArr);//[20, 45, 70, 99, 90, 85, 50, 60]
5.Set方法去重
var arr = [20, 45, 70, 99, 90, 85, 50, 20, 90, 60];
var newArr = [...new Set(arr)];
console.log(arr);//[20, 45, 70, 99, 90, 85, 50, 20, 90, 60]
console.log(newArr);//[20, 45, 70, 99, 90, 85, 50, 60]