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
 求解释 为什么安数组下标从大到小删除就没问题 ?

解决方案 »

  1.   

    删除一个元素后,下标不就变化了么?
    没测试。
      

  2.   

    是的 我也是这么认为的 但是如果是安 从大到小删除 就完全不会出问题  如果是次序乱的 删除 就会 有问题  求解释哦
      

  3.   

    看了下这两段代码
    第一段代码
    第一次删除数组下标为5的项,数组容量变为5
    第二次删除数组下标为3的项,数组容量变为4
    第三次删除数组下标为1的项,数组容量变为3
    所以删除没问题
    第二段代码
    数组下标为3的项删除后,数组的容量变为4了,不再存在下标为4的项,
    所以删除出问题。
      

  4.   

    从大到小删,删除后面大的,对前面的剩余元素的下标没影响。
    如果如果次序乱的,就有可能删除了前面的元素后,后面大下标元素的下标就有变化了。