首页 新闻 会员 周边

关于js的数组去重算法疑问

0
悬赏园豆:5 [已解决问题] 解决于 2016-09-29 10:34
1 function unique(array) {
2     var r = [];
3     for (var i = 0, l = array.length; i < l; i++) {
4         for (var j = i + 1; j < l; j++) 
5             if (array[i] === array[j])   j = ++i;
6         r.push(array[i]);
7     }
8     return r;
9 }

这个算法中的  j = ++i  ;是 i =i+1 然后 j = i 吗?那 j 就是变成 j = i+1 不是出不来第二个循环吗?

我进入了个思维死胡同出不来了,谢谢帮忙解惑!

vickysi的主页 vickysi | 初学一级 | 园豆:199
提问于:2016-09-29 00:50
< >
分享
最佳答案
0

 第二层for循环中有j++的,所以下次循环时j还是比i大1

收获园豆:5
授之以渔 | 小虾三级 |园豆:1107 | 2016-09-29 08:50

懂了,谢谢

vickysi | 园豆:199 (初学一级) | 2016-09-29 10:32
其他回答(1)
0

题主你好,

我想首先你要理解,i++和++i的区别。

i++是先赋值再自增。

++i是先自增在赋值。

那么 var j = i++,就可以分解为var j = i;i=i+1来理解;

var j = ++i,就是i=i+1;var j = i.

vytao | 园豆:202 (菜鸟二级) | 2016-10-13 03:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册