在学习过程中发现两种基础的数组去重的方法,虽说是两种,其实只是把第一种方法的第二层for循环中改变了一下条件表达式和把递增改成递减。
方法一: 重复的元素在最后重复的位置显示
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
// 创建标记变量
var flag = true;
// 后面元素与前面元素重复的话,
// 前面重复元素不会添加到新数组中
for (var j = i + 1; j < arr.length ; j++) {
if (i == j) {
// 位置重复不进行判断
// 直接进行下一个位置的判断
continue;
}
//判断是否重复
if (arr1[i] == arr1[j]) {
// 重复了,把flag标记为false
flag = false;
// 已经判断重复了,无需再判断后续元素
// 直接break,跳出这一层循环
break;
}
}
// flag未标记为false(即遍历后未发现此时的arr[i]
// 是不与其他数组元素重复的
if (flag) {
// 添加不重复的数组元素
newArr1[newArr1.length] = arr1[i];
}
}
console.log(newArr1);
原数组为: [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
输出结果为: [2, 6, 1, 77, 52, 0, 25, 7]
方法二: 重复的元素在第一次重复的位置显示
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr1 = [];
for (var i = 0; i < arr1.length; i++) {
// 创建标记变量
var flag = true;
// 后面元素与前面元素重复的话,
//后面重复元素不会添加到新数组中
for (var j = i + 1; 0 <= j ; j--) {
if (i == j) {
// 位置重复不进行判断
// 直接进行下一个位置的判断
continue;
}
//判断是否重复
if (arr1[i] == arr1[j]) {
// 重复了,把flag标记为false
flag = false;
// 已经判断重复了,无需再判断后续元素
// 直接break,跳出这一层循环
break;
}
}
// flag未标记为false(即遍历后未发现此时的arr[i]是不与其他数组元素重复的
if (flag) {
// 添加不重复的数组元素
newArr1[newArr1.length] = arr1[i];
}
}
console.log(newArr1);
原数组为: [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
输出结果为: [2, 0, 6, 1, 77, 52, 25, 7]