上半年在做ExtJS的时候,因为项目一些特殊情况需要直接删数组中的特定元素,

并且传入的参数可能会是下标,也可能会是数组元素。

所以就纠结出了如下的方法,留着以后查阅。

  1. /**
  2. * 方法:Array.remove(dx) 
  3.  * 功能:在原数组上删除数组元素.  
  4.  * 参数:dx删除元素的下标,或者数组元素(默认为下标) 
  5.  * 返回:被删除的数组元素
  6.  */ 
  7. // 获取数组中指定元素的索引 
  8. Array.prototype.getIndexByValue = function(value) { 
  9.     var index = -1; 
  10.     for ( var i = 0; i < this.length; i++) { 
  11.         if (this[i] == value) { 
  12.             index = i; 
  13.             break
  14.         } 
  15.     } 
  16.     return index; 
  17. // 通过遍历,重构数组. 
  18. Array.prototype.remove = function(dx) { 
  19.     var me = this, removed = null
  20.     if (dx > me.length - 1) { 
  21.         return false
  22.     } 
  23.     if (isNaN(dx)) { 
  24.         removed = me.remove(me.getIndexByValue(dx)); 
  25.     } 
  26.     for ( var i = 0, n = 0; i < me.length; i++) { 
  27.         if (me[i] != me[dx]) { 
  28.             me[n++] = me[i] 
  29.         } else { 
  30.             removed = me[i]; 
  31.         } 
  32.     } 
  33.     if (removed) 
  34.         me.length -= 1; 
  35.     return removed;