昨天用for循環(huán)進(jìn)行數(shù)組去重的時(shí)候出現(xiàn)的問(wèn)題,
首先,用雙重for循環(huán)把前一個(gè)和所有后面的元素進(jìn)行比較,如果相等則刪除。
但是,如果數(shù)組里面有三個(gè)以上連續(xù)相等的元素的時(shí)候,就會(huì)出現(xiàn)問(wèn)題。
var arr = [1,1,1,2,2];for(var i=0; i<arr.length-1; i++){for(var j=i+1; j<arr.length; j++){if(arr[i] === arr[j]){arr.splice(j,1);}}} document.write("arr:"+arr);
輸出:
這是因?yàn)楫?dāng)數(shù)組刪除一個(gè)元素的時(shí)候,數(shù)組長(zhǎng)度減1,后面點(diǎn)元素就會(huì)往前移動(dòng)一位,索引也減1,但是j還是進(jìn)行了j++的操作。
即第一次進(jìn)行刪除是,i=0 j=1,刪除以后arr=[1,1,2,2],然后j=2,就會(huì)忽略掉刪除以后j=1的元素繼續(xù)往后遍歷。
因此在每次進(jìn)行了刪除的情況下,要對(duì)j進(jìn)行減1
var arr = [1,1,1,2,2];for(var i=0; i<arr.length-1; i++){for(var j=i+1; j<arr.length; j++){if(arr[i] == arr[j]){arr.splice(j--,1);}}}document.write("arr:"+arr);
輸出:
類似關(guān)于對(duì)數(shù)組元素進(jìn)行刪除的,都要考慮數(shù)組長(zhǎng)度會(huì)減1,后面的元素都會(huì)往前移動(dòng)一位
以上所述是小編給大家介紹的JavaScript中關(guān)于for循環(huán)刪除數(shù)組元素內(nèi)容時(shí)出現(xiàn)的問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注