实现对一个数组去重的功能,并将去重后结果存放在新的数组
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4-3</title>
<script type="text/javascript">
var arr5=new Array(1,2,3,4,5,6,7,7,6,5);
var arr6=[];
for(var i=0;i<arr5.length;i++)
{
for(var j=0;j<arr5.length;j++)
{
if(arr5[i]==arr5[j])
{
j=i;
i=i+1;
}
}
arr6.push(arr5[i]);
}
document.write("去重后的数组为:",arr6);
}
</script>
</head>
<body>
</body>
</html>
在浏览器打开后没有运行,请大神看看问题在哪。
1.最后多了一个大括号
2.对新数组添加时要放到if里边
首先是格式问题,多了最后的大括号
其次是逻辑问题,i、j都从0开始遍历arr5,所以第一次必然会进入if分支,在if分支中,将i赋值给j、j仍然为0,然后i增加1,if分支结束后,**j会增加1**。
错误就在于,**此时i和j又相同**,所以arr5[i]总是等于arr5[j]
当最内层循环结束时,下标i被增加到10,数组下标越界arr5[i]为undefined。
所以不是没有运行而是没结果。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4-3</title>
<script type="text/javascript">
var arr5=new Array(1,2,3,4,5,6,7,7,6,5);
var arr6=[];
for(var i=0;i<arr5.length;i++){
isExists=false
for (var j=0;j<arr6.length;j++){
if(arr5[i]==arr6[j]){
isExists=true
break;
}
}
if(!isExists){
arr6.push(arr5[i]);
}
}
document.write("去重后的数组为:",arr6);
</script>
</head>
<body>
</body>
</html>