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 不是出不来第二个循环吗?
我进入了个思维死胡同出不来了,谢谢帮忙解惑!
第二层for循环中有j++的,所以下次循环时j还是比i大1
懂了,谢谢
题主你好,
我想首先你要理解,i++和++i的区别。
i++是先赋值再自增。
++i是先自增在赋值。
那么 var j = i++,就可以分解为var j = i;i=i+1来理解;
var j = ++i,就是i=i+1;var j = i.