Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 对ActionScript3中的对象向量进行排序_Actionscript 3_Sorting_Object_Vector - Fatal编程技术网

Actionscript 3 对ActionScript3中的对象向量进行排序

Actionscript 3 对ActionScript3中的对象向量进行排序,actionscript-3,sorting,object,vector,Actionscript 3,Sorting,Object,Vector,我有这个对象向量,每个对象都有一些属性(日期、名称、id等) 我想按日期对向量进行排序。我该怎么做?我已经看到,数组支持sortOn()函数,但向量没有 对象: public final class DisciplineEvent { public var id:Number; public var name:String; public var date:Date;} Thanx用于回答。假设你有这个向量: var objects:Vector<ObjectTy

我有这个对象向量,每个对象都有一些属性(日期、名称、id等)

我想按日期对向量进行排序。我该怎么做?我已经看到,数组支持sortOn()函数,但向量没有

对象:

public final class DisciplineEvent {
    public var id:Number;
    public var name:String;
    public var date:Date;}

Thanx用于回答。

假设你有这个向量:

var objects:Vector<ObjectType> = new Vector<ObjectType>();
objects.push(obj1, obj2);
var对象:向量=新向量();
对象。推送(obj1、obj2);
您可以将其分类为:

var sortingFunction:Function = function(itemA:ObjectType, itemB:ObjectType):Number {
    if (itemA.date.valueOf() < itemB.date.valueOf()) return -1; //ITEM A is before ITEM B
    else if (itemA.date.valueOf() > itemB.date.valueOf()) return 1; //ITEM A is after ITEM B
    else return 0; //ITEM A and ITEM B have same date
}

objects.sort(sortingFunction);
var-sortingFunction:Function=Function(itemA:ObjectType,itemB:ObjectType):编号{
if(itemA.date.valueOf()itemB.date.valueOf())返回1;//项A在项B之后
else返回0;//项目A和项目B的日期相同
}
objects.sort(排序函数);
更多信息可在此处找到:

为了提高速度,您最好访问数组的
sortOn()
并获得一个向量,结果就是只需将向量的内容复制到数组中,使用
sortOn()
,然后将内容复制回数组中。例如:

var vec:Vector.<Object> = new <Object>[
    { a: 2 }, { a: 1 }, { a: 12 }, { a: 7 }
];

var array:Array = [];
while(vec.length > 0) array.push(vec.pop());

array.sortOn("a", Array.NUMERIC|Array.DESCENDING);
while(array.length > 0) vec.push(array.pop());

for each(var i:Object in vec)
{
    trace(i.a);
}
var-vec:Vector.=新的[
{a:2},{a:1},{a:12},{a:7}
];
变量数组:数组=[];
而(vec.length>0)array.push(vec.pop());
array.sortOn(“a”,array.NUMERIC | array.DESCENDING);
而(array.length>0)vec.push(array.pop());
对于每个(变量i:vec中的对象)
{
微量元素(i.a);
}

IMHO对于对象,您最好使用数组,因为对象是一种动态类型,因此本机使用
sortOn()
将比使用向量的拐杖更好。无论如何,任何对象都可以派生为object类型,所以生成一个
向量。
是毫无意义的。在这里同意@Vesper。数组的
sortOn
比你自己的任何排序函数都要快得多,你可以使用Vector,而且你不会从使用Vector中得到任何东西,除非它存储原语。谢谢你的回答。我用过马蒂·华莱士的解决方案,对我来说最简单。当你说“你什么都得不到”时,你是什么意思?显然,向量有类型安全性,在团队中工作时这是一个很大的好处,但我认为总体性能也会有所提高,不是吗?是的,或者更好,声明类范围(可能是私有的)函数直接传递给向量。