0

私は Flex を使用しており、データグリッドにフィードする配列を作成しました。ここに小さなピースがあります。配列の特定の要素を削除しましたが、データグリッド上の削除されていない要素の間にスペースが表示されています。配列の 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] => 'value', [3] => 'value', [6] => 'value' のように見える actionscript の配列のキーを [0] => 'value にリセットする方法', [1] => 'value', [2] => 'value' 配列自体を並べ替えずに

4

2 に答える 2

0

ええ、それを理解しました。RegExpで配列をフィルタリングする場所に、これを追加しました:

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

したがって、配列内の実際の要素の数があり、それを並べ替えて、すべての空の要素を一番下に配置しました。

verizonArray.sortOn("DATE");

次に、長さを実際の要素の数に設定します。

verizonArray.length = countVerizonPons;

終わり

于 2012-04-26T20:51:58.233 に答える
0

キーの位置番号を保持する必要がない場合は、次のほうが使いやすいかもしれません。

array.splice(itemNumToRemove, numOfElementsToRemoveFromThatPosition)

コードでは次のようになります。

if(result == null) {
     verizonArray.splice(i, 1)
}
于 2012-04-26T21:19:39.110 に答える