2012-04-26 9 views
0

私はFlexを使用しています。私はデータグリッドにフィードするための配列を作成しました。配列の特定の要素を削除しましたが、現在はデータグリッド上の削除されていない要素の間にスペースが表示されています。配列のKEYS(要素そのものではない)を並べ替えるだけで、データグリッドにスペースを入れずに表示するだけです。KEYSの配列をactionscriptにリセットする/並べ替え

 [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] => '値' のように見えるActionScriptの配列のキーをリセットする方法[3] => '値が'、[6] => '値' [0] => '値'、[1] => '値'、[2] => '配列'を並べ替えることなく '値'

答えて

0

ええ、それは分かりました。私は正規表現の配列をフィルタリングする場合に、私はこの追加:したがって、私は、アレイ内の実際の要素数を有する

   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