Actionscript 3 AS3 Flex中的已排序对象/贴图?
在Actionscript 3 Flex中,是否可以对对象进行排序或对对象进行某种排序?我有一个这样创建的对象:Actionscript 3 AS3 Flex中的已排序对象/贴图?,actionscript-3,flash,apache-flex,object,dictionary,Actionscript 3,Flash,Apache Flex,Object,Dictionary,在Actionscript 3 Flex中,是否可以对对象进行排序或对对象进行某种排序?我有一个这样创建的对象: private var data:Object = new Object(); 然后,我继续将一些键和值放入其中: this.data.someKeyOne = 0; this.data.someKeyTwo = 1337; this.data.someKeyThree = 123; 之后,我在对象中循环: for (var dataPart:String in this.dat
private var data:Object = new Object();
然后,我继续将一些键和值放入其中:
this.data.someKeyOne = 0;
this.data.someKeyTwo = 1337;
this.data.someKeyThree = 123;
之后,我在对象中循环:
for (var dataPart:String in this.data) {
trace("Key: " + dataPart = " Value:" + this.data["dataPart"]);
}
但我的问题是,数据不会按照我初始化它们的顺序显示。这是令人沮丧的,因为它需要按照初始化的顺序进行。Adobe帮助关于:
for..in循环遍历对象的属性,或
数组的元素。例如,可以在循环中使用For..in来
遍历泛型对象的属性(对象属性
未按任何特定顺序保存,因此属性可能出现在
(看似随机的顺序)
结论
如果希望键按顺序显示,则必须使用数组
(或向量
):
正如@helloflash在关于对象的循环中所说,根据(对象类的实例):
关联数组(有时称为哈希或映射)使用键而不是数字索引来组织存储的值。关联数组中的每个键都是用于访问存储值的唯一字符串。关联数组是对象类的实例,这意味着每个键对应一个特性名称。关联数组是键对和值对的无序集合。代码不应期望关联数组的键按特定顺序排列
您得到的行为是正常的,在您的情况下(使用这样的对象)无法获得有序键
如果您不需要密钥,可以按照@helloflash在中所说的那样,使用一个简单的数组或向量。否则,可以使用对象数组,如下所示:
var obj:Object, i:int, s:String;
var data_array:Array = [
{key: 'someKeyOne', value: 0},
{key: 'someKeyTwo', value: 1337},
{key: 'someKeyThree', value: 123}
]
for(i = 0; i < data_array.length; i++){
obj = data_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (s in data_array) {
obj = data_array[s];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in data_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
var data_object:Object = new Object();
data_object.someKeyOne = {index:0, value: 0};
data_object.someKeyTwo = {index:1, value: 1337};
data_object.someKeyThree = {index:2, value: 123};
var tmp_array:Array = sort_obj(data_object);
for(i = 0; i < tmp_array.length; i++){
obj = tmp_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (obj in tmp_array) {
obj = tmp_array[obj];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in tmp_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
function sort_obj(obj:Object):Array {
var a:Array = [];
for (var key:String in obj) {
a.push({key: key, index: obj[key].index, value: obj[key].value});
}
a.sortOn('index', Array.NUMERIC);
return a;
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
var-obj:Object,i:int,s:String;
变量数据_数组:数组=[
{key:'someKeyOne',值:0},
{key:'someKeyTwo',值:1337},
{key:'somekeytree',值:123}
]
对于(i=0;i
或者,您可以使用对象,然后将其排序为如下数组:
var obj:Object, i:int, s:String;
var data_array:Array = [
{key: 'someKeyOne', value: 0},
{key: 'someKeyTwo', value: 1337},
{key: 'someKeyThree', value: 123}
]
for(i = 0; i < data_array.length; i++){
obj = data_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (s in data_array) {
obj = data_array[s];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in data_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
var data_object:Object = new Object();
data_object.someKeyOne = {index:0, value: 0};
data_object.someKeyTwo = {index:1, value: 1337};
data_object.someKeyThree = {index:2, value: 123};
var tmp_array:Array = sort_obj(data_object);
for(i = 0; i < tmp_array.length; i++){
obj = tmp_array[i];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for (obj in tmp_array) {
obj = tmp_array[obj];
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
for each (obj in tmp_array){
trace('Key : ' + obj.key + ', Value = ' + obj.value);
}
function sort_obj(obj:Object):Array {
var a:Array = [];
for (var key:String in obj) {
a.push({key: key, index: obj[key].index, value: obj[key].value});
}
a.sortOn('index', Array.NUMERIC);
return a;
}
// all these 3 loops give :
// Key : someKeyOne, Value = 0
// Key : someKeyTwo, Value = 1337
// Key : someKeyThree, Value = 123
var data_object:object=new object();
data_object.someKeyOne={index:0,value:0};
data_object.someKeyTwo={index:1,value:1337};
data_object.someKeyThree={index:2,value:123};
var tmp_数组:数组=排序对象(数据对象);
对于(i=0;i
希望所有这些都能帮助您。请注意,我想要一个可以排序的对象。不是一个有序的对象数组。我不太愿意使用(键、值)对来调用关联数组,但我认为这不是实质性的问题。感谢akmozo添加这些精度!