代码如下:
<script>
function noRepeat(a) {
var arr = a;//定义一个数组用来接收从外边传进来的数组
var arr2 = [];//定义一个空数组,用来放不重复的新的数组
for(var i=0;i<arr.length;i++){//遍历数组
var flag = true;//定义一个开关没来决定放不放入新数组
for (j=0;j<arr2.length;j++){//遍历新数组
if(arr[i]===arr2[j]){//如果相等,就不放了
flag=false;
break;
}
}
if(flag){
arr2.push(arr[i])
}
}
return arr2;
}
var a = [1,2,3,3,4,4,4,5,8,8,8];
var res = noRepeat(a);
console.log(res);
</script>
分析:数组去重,就是数组里有重复的元素,要将他去掉,类比一个袋子①里有五颜六色的很多颜色相同的球,要将颜色一样的去掉,颜色相同的只留一个,那么我们会怎么做呢?
首先要准备一个空袋子②------创建一个新的空的数组
然后在袋子①里找球----遍历第一个数组里的值
第一个球肯定是要放到新的袋子里的,这个不用考虑
从袋子①里拿到第二个球,就和袋子②里放入的球比较,如果相同就不放到新袋子里了,扔出去---break
然后继续,直到把袋子里的球拿完。
在这里要加一个开关,开关关着就不让放,开关开着,就放到新袋子里。
为什么要加开关呢?当我拿到一个,它必须和袋子②里的每个球都对比一下,也就是新数组里的值必须遍历完才可以添加,不然只和袋子②里的第一个比较看见不同,就添加进去,其实里面已经有一个相同颜色的,那不就达不到去重的效果了吗?解决这个问题的办法就是要加一个开关。在袋子②遍历完成之后,如果开关开着,才可以加球。
网友评论