javascript - 第二個(gè)for循環(huán)里面的j--什么意思?
問(wèn)題描述
var arr = [ 1,2,2,4,2 ];
for ( var i=0; i<arr.length; i++ ) {
for ( var j=i+1; j<arr.length; j++ ) { if ( arr[i] == arr[j] ) {arr.splice( j, 1 );j--; }}
}
問(wèn)題解答
回答1:如果遇到重復(fù)項(xiàng),從 arr 中 splice 掉。splice 掉之后,數(shù)組下一項(xiàng)仍是當(dāng)前索引,所以要先 j--; 再循環(huán)中的 j++,保持索引正確。
比如,外層第2次循環(huán),i = 1,j = 2,然后 arr[1] 是2,arr[2] 也是2,arr[2] 會(huì)被 splice 掉,數(shù)組變成 [1,2,4,2],下個(gè)元素 4 仍是第 2 項(xiàng),如果不先 j--的話會(huì)漏掉。
回答2:樓上說(shuō)的沒(méi)錯(cuò)。補(bǔ)充一下,直接用 filter 就可以實(shí)現(xiàn)了。
var arr = [ 1,2,2,4,2 ];arr.filter(function (e, i) { return arr.indexOf(e) === i;})
相關(guān)文章:
1. mac連接阿里云docker集群,已經(jīng)卡了2天了,求問(wèn)?2. docker網(wǎng)絡(luò)端口映射,沒(méi)有方便點(diǎn)的操作方法么?3. vim - docker中新的ubuntu12.04鏡像,運(yùn)行vi提示,找不到命名.4. angular.js - angular內(nèi)容過(guò)長(zhǎng)展開(kāi)收起效果5. 為什么我ping不通我的docker容器呢???6. 前端 - @media query 使用出現(xiàn)的問(wèn)題?7. golang - 用IDE看docker源碼時(shí)的小問(wèn)題8. html5和Flash對(duì)抗是什么情況?9. spring-mvc - spring-session-redis HttpSessionListener失效10. 我何時(shí)應(yīng)該在Java中使用JFrame.add(component)和JFrame.getContentPane()。add(component)

網(wǎng)公網(wǎng)安備