我正在使用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;没有重新排序数组本身的“价值”
答案 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)
}