数组去重函数(见下图及代码),第一次循环时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>
j肯定是undefined
j是for(var j = i+1;j<len;j++){}循环的局部变量
而if(j){}判断不在for(var j=i+1;j<len;j++){}循环内
一周热门 更多>