首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

一个js数组删除的有关问题

2012-09-01 
一个js数组删除的问题vararr [ a , b , c , d , e , f ]vartoDeleteIndexes [

一个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的项,
所以删除出问题。
[解决办法]
从大到小删,删除后面大的,对前面的剩余元素的下标没影响。
如果如果次序乱的,就有可能删除了前面的元素后,后面大下标元素的下标就有变化了。

热点排行