数组去重函数中的变量j怎么是undefined 财富值9

2016-10-14 14:07发布

数组去重函数(见下图及代码),第一次循环时i=0,最里面的for循环中var j = i+1,j为什么不等于1,反而等于undefined?导致only([5])的结果是[]
PS:我的理解是尽管j<len条件不成立,j已经被赋值为1了,哪里出了问题?
(1)调试截图:

(2)代码:

<!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <title>dd</title> </head> <body> <script type="text/javascript">     function only(arr){     var newArr = [],     len = arr.length;     for(var i = 0;i<len-1;i++){         for(var j = i+1;j<len;j++){             if(arr[i]===arr[j]){         j = false;         break;         }         }     if(j){         newArr.push(arr[i]);     }     }     return newArr;     }     console.log(only([5])) </script> </body> </html>
付费偷看设置
发送
3条回答
bbjbbj - 这个人很懒,什么都没留下
1楼 · 2016-10-14 14:49.采纳回答

外层循环 for(var i = 0;i<len-1;i++){ }就没执行啊
你这句相当于 当i=0开始,i<0结束 ,循环进不去
正确的应该是 for(var i = 0;i<len;i++){ } 吧

j肯定是undefined
j是for(var j = i+1;j<len;j++){}循环的局部变量
而if(j){}判断不在for(var j=i+1;j<len;j++){}循环内

JavaScript肯定判断j变量未定义,则肯定undefined