关于JavaScript的问题求解答2

实现对一个数组去重的功能,并将去重后结果存放在新的数组

<!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>