JavaScript中關于for循環(huán)刪除數組元素內容時出現(xiàn)的問題
昨天用for循環(huán)進行數組去重的時候出現(xiàn)的問題,
首先,用雙重for循環(huán)把前一個和所有后面的元素進行比較,如果相等則刪除。
但是,如果數組里面有三個以上連續(xù)相等的元素的時候,就會出現(xiàn)問題?!?/p>
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);
輸出:

這是因為當數組刪除一個元素的時候,數組長度減1,后面點元素就會往前移動一位,索引也減1,但是j還是進行了j++的操作。
即第一次進行刪除是,i=0 j=1,刪除以后arr=[1,1,2,2],然后j=2,就會忽略掉刪除以后j=1的元素繼續(xù)往后遍歷。
因此在每次進行了刪除的情況下,要對j進行減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);
輸出:

類似關于對數組元素進行刪除的,都要考慮數組長度會減1,后面的元素都會往前移動一位
以上所述是小編給大家介紹的JavaScript中關于for循環(huán)刪除數組元素內容時出現(xiàn)的問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
javascript 實現(xiàn)簡單的table排序及table操作練習
在這個列子中,練習了table的操作,主要有:tBodies、rows、cells,還有有關數組的排序方法:sort,按興趣的朋友可以研究下2012-12-12
JavaScript取得gridview中獲取checkbox選中的值
這篇文章主要介紹了 js取得gridview中獲取checkbox選中的值,本文給大家分享兩段代碼片段,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-07-07
JavaScript實現(xiàn)的DOM繪制柱狀圖效果示例
這篇文章主要介紹了JavaScript實現(xiàn)的DOM繪制柱狀圖效果,涉及javascript數值計算及頁面元素屬性動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下2018-08-08

