在actionscript中重置/重新排序KEYS for array

时间:2012-04-26 20:10:23

标签: arrays actionscript flex4

我正在使用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] =&gt; '价值',[3] =&gt; '价值',[6] =&gt; “值”为[0] =&gt; '价值',[1] =&gt; '价值',[2] =&gt;没有重新排序数组本身的“价值”

2 个答案:

答案 0 :(得分:0)

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

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

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

verizonArray.sortOn("DATE");

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

verizonArray.length = countVerizonPons;

结束

答案 1 :(得分:0)

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

array.splice(itemNumToRemove, numOfElementsToRemoveFromThatPosition)

在您的代码中,它将是:

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