【问题标题】:Resetting / Reordering KEYS for array in actionscript为 actionscript 中的数组重置/重新排序 KEYS
【发布时间】:2012-05-07 14:48:25
【问题描述】:

我正在使用 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' 不重新排序数组本身

【问题讨论】:

    标签: arrays actionscript flex4


    【解决方案1】:

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

    array.splice(itemNumToRemove, numOfElementsToRemoveFromThatPosition)
    

    在您的代码中是:

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

    【讨论】:

    • 是的,这对我不起作用,不知道为什么,但这是我首先尝试的。它只会将整个数组返回为空。谢谢你的回答
    【解决方案2】:

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

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

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

    verizonArray.sortOn("DATE");
    

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

    verizonArray.length = countVerizonPons;
    

    结束

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2016-09-21
      • 2015-02-13
      • 1970-01-01
      相关资源
      最近更新 更多