好的我循环遍历对象中的属性:
private var _propsList:Object = {'Type':'product_type'
,'Kind':'product_type_sub'
,'Stone':'primary_stone'
,'Stone Color':'primary_stone_sub'
,'Metal':'metal_type'
,'Brand':'product_brand'};
for(key in _propsList)
{
val = _propsList[key];
trace(key +" = "+ val);
}
我希望第一个跟踪是 Type = property_type ,因为这是第一个在数组中定义的跟踪,但它每次都会随机出现。我想这是因为我的键是字符串而不是整数,但有没有办法指定它循环的顺序?
谢谢!
答案 0 :(得分:4)
您不能依赖for (v in someObject) ...
以可预测的顺序返回内容,不是。
根据您的具体情况,您可以使用数组来保存密钥,然后迭代:
private var keys:Array = ["Type", "Kind", "Stone", "Stone Color", "Metal", "Brand"];
private function iterate():void
{
for each (var k:String in keys)
{
trace(_propsList[k]);
}
}
可能有点明显或不优雅,但它可以完成工作。 :)
答案 1 :(得分:0)
你可以通过分类你的“_propsList”对象来破解它,在新创建的PropsList类中创建一个数组,该类按顺序引用属性。此时,您可以在阵列上运行FOR循环并按顺序获取属性。
或者,你可以在新类中有一个函数来返回这些属性的数组。像这样:
public function getProps():Array {
return [myPropertyOne, myPropertyTwo, myPropertyThree];
}
答案 2 :(得分:0)
一般来说,我认为这种情况下您不应该依赖于您正在使用的框架/语言中的特定行为。这种行为通常记录不清,可以在不同版本之间进行更改。
如果您确实需要特定的检索顺序,我会创建一个包装类,如上面建议的jevinkones。也许在框架中甚至还有一个实用程序类来完成这个(Dictionary等等)?
HTH, KARTHIK
答案 3 :(得分:0)
我发现此链接提供了一些背景信息: Subtle Change in for..in Loops for ActionScript 3
这个问题实际上是this one的重复。
答案 4 :(得分:0)
如何使用这样的数组表示:
var _propsList:Array = [
['Type', 'product_type'],
['Kind', 'product_type_sub'],
['Stone', 'primary_stone'],
['Stone Color', 'primary_stone_sub'],
['Metal', 'metal_type'],
['Brand', 'product_brand']
];
for(var i in _propsList) {
var elem = _propsList[i];
var key = elem[0];
var val = elem[1]
}