一个js数组删除的问题
var arr = [ " a " , " b " , " c " , " d " , " e " , " f " ];
var toDeleteIndexes = [ 5 , 3 , 1 ];
for ( var i = 0 ;i < toDeleteIndexes.length ; i ++ ){
arr.splice(toDeleteIndexes[i], 1 );
}
alert(arr); // a,c,e
如上如果是从大到小删除就没问题
var arr = [ " a " , " b " , " c " , " d " , " e " , " f " ];
var toDeleteIndexes = [ 5 , 3 , 4 ];
for ( var i = 0 ;i < toDeleteIndexes.length ; i ++ ){
arr.splice(toDeleteIndexes[i], 1 );
}
alert(arr); // a,b,c,e
求解释 为什么安数组下标从大到小删除就没问题 ?
------解决方案--------------------看了下这两段代码
第一段代码
第一次删除数组下标为5的项,数组容量变为5
第二次删除数组下标为3的项,数组容量变为4
第三次删除数组下标为1的项,数组容量变为3
所以删除没问题
第二段代码
数组下标为3的项删除后,数组的容量变为4了,不再存在下标为4的项,
所以删除出问题。
------解决方案--------------------从大到小删,删除后面大的,对前面的剩余元素的下标没影响。
如果如果次序乱的,就有可能删除了前面的元素后,后面大下标元素的下标就有变化了。