0

我正在使用 Flex 我已经创建了一个数组来输入数据网格,这里是一小块。我已经删除了数组的某些元素,现在它在数据网格上的未删除元素之间显示为空格。我只是想重新排序数组的键(不是元素本身),所以它会在数据网格上显示没有空格。

        [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' 到 [0] => 'value ', [1] => 'value', [2] => 'value' 不重新排序数组本身

4

2 回答 2

0

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

array.splice(itemNumToRemove, numOfElementsToRemoveFromThatPosition)

在您的代码中,它将是:

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

是的,想通了。在我用 RegExp 过滤数组的地方,我添加了这个:

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

因此我有数组中实际元素的数量,然后我对其进行排序以将所有空元素放在底部:

verizonArray.sortOn("DATE");

然后我将长度设置为实际元素的数量:

verizonArray.length = countVerizonPons;

结束

于 2012-04-26T20:51:58.233 回答