js数组去重的方法有很多,自己纯手写效率低,且繁琐,但是对于新手训练思维还是很有帮助的。接下来我只写一种比较麻烦好理解的数组去重的思路,供大家参考和批评。
干净的代码 建议先阅读一遍 看不懂后 再看下面的解析版 当然我并没有封装成一个函数 以后可能会更新
var arr3 = [11,23,45,11,2,4,6,5,45,11];
var newArr=[];
for(let i = 0; i < arr3.length; i++){
var flag = true;
for(let j = 0; j < newArr.length ; j++){
if(arr3[i] == newArr[j]){
flag = false;
break;
}
}
if(flag){
newArr[newArr.length] = arr3[i];
}
}
console.log(arr3);
console.log(newArr);
注释很乱的代码版本
var arr3 = [11,23,45,11,2,4,6,5,45,11];
var newArr=[];
for(let i = 0; i < arr3.length; i++){//取出arr3数组里面的所有数
var flag = true;//定义一个标志 标明如果没有重复的 就为 true 并且每取出arr3数组的一个数就给flag的值初始化为true
for(let j = 0; j < newArr.length ; j++){//取出新数组newArr里面的每一个数(没有重复的数字就添加到newArr新数组里面 每添加一个数字,新数组的长度就加1 )
if(arr3[i] == newArr[j]){//拿新数组newArr里面的数 和 旧数组arr3里面的数 一一进行对比 如果有重复的进入if判断语句
flag = false;//有重复的 给flag 赋值为false
break;//如果有重复的 不需要再继续进行判断了 直接跳出
}
}
if(flag){//进行判断 如果 flag为 true 就代表没有重复的 进入if语句 如果为false就代表有重复的 不进入if语句
newArr[newArr.length] = arr3[i]; //arr3[i] 这个数值 在newArr里面没有 所以添加在newArr的尾部;相当于 arr[2] = 3;
}
}
console.log(arr3);
console.log(newArr);