2012-04-26 71 views
0

我正在使用Flex并且我已经创建了一个数组来馈入一个数据网格,这里是一小块。我删除了数组中的某些元素,现在它显示出数据网格上未删除元素之间的空格。我只是想重新排序数组中的KEYS(而不是元素本身),所以它将在数据网格中显示为没有空格。重置/重新排序在动作数组中的KEYS

 [Bindable] 
     public var initDG:ArrayCollection; 
     public function loaderComplete(event: Event):void { 
       var fileString:String = event.target.data; 
       var dataArray:Array = fileString.split("\n"); 
       var gridArray:Array = new Array(); 
        for(var i:int = 0; i < dataArray.length; i++) { 

         var valueArray:Array = dataArray[i].split(","); 
         gridArray.push({PON:valueArray[0], VER:valueArray[1], DATE:valueArray[2], XML:valueArray[3], 
           DOC:valueArray[4], SENT:valueArray[5]}); 


        } 

      var verizonArray:Array = gridArray; 

      for(i = 0; i < verizonArray.length; i++) { 
       var myPattern:RegExp = /^6006/; 
       var result:Object = myPattern.exec(verizonArray[i]["PON"].toString()); 
       if(result == null) { 
        delete verizonArray[i]; 
       } 
      } 

      // here I need to reorder the keys 

      gridArray.shift(); 
      initDG=new ArrayCollection(verizonArray); 

     } 

TL; DR:如何数组的键复位动作看上去像[0] => '值',[3] => '值',[6] => '值' [0] =>'value',[1] =>'value',[2] =>'value'而不重新排序阵列本身

回答

0

是的,到其中I阵列与正则表达式过滤,添加此:

   if(result == null) { 
        delete verizonArray[i]; 
       } else { 
        countVerizonPons++; 
       } 

因此我有阵列中实际元素的数量,那么我排序它把所有的空元素在底部:

verizonArray.sortOn("DATE"); 

然后我的长度设定为实际的元素数:

verizonArray.length = countVerizonPons; 

结束

0

如果您不需要保留的关键位置号码,你可能会发现它更容易使用:

array.splice(itemNumToRemove, numOfElementsToRemoveFromThatPosition) 

在你的代码,这将是:

if(result == null) { 
    verizonArray.splice(i, 1) 
} 
+0

呀,这不会为我工作,不知道为什么,但这是我第一次尝试。它只会将整个数组返回为空。谢谢你的答案 – squarephoenix 2012-04-26 21:44:26