Actionscript 3 获取索引x处对象的键

Actionscript 3 获取索引x处对象的键,actionscript-3,apache-flex,Actionscript 3,Apache Flex,如何在Flex中获取对象指定索引处的键 var screenWindowListObject:Object = { 'something' : 'awesome', 'evenmore' : 'crazy', 'evenless' : 'foolish' }; 我想要索引1处的键,即evenmore 在JavaScript中,可以使用以下代码 var keys = Object.keys(screenWindowListObject); console.log(keys[1])

如何在Flex中获取对象指定索引处的键

var screenWindowListObject:Object = {
  'something' : 'awesome',
  'evenmore'  : 'crazy',
  'evenless'  : 'foolish'
};
我想要索引1处的键,即
evenmore

在JavaScript中,可以使用以下代码

var keys = Object.keys(screenWindowListObject);
console.log(keys[1]);   // gives output 'evenmore'
Flex中是否有任何等价物

var screenWindowListObject:Object = {
  'something' : 'awesome',
  'evenmore'  : 'crazy',
  'evenless'  : 'foolish'
};
我有一个具有唯一键的对象。值不是唯一的。我通过将这些值添加到数组集合来显示DropDownList中的值。我必须根据所选索引从对象获取密钥

JavaScript在循环中使用与..相同的顺序作为
,因此在AS3中可以用相同的方式实现它:

function getKeys(object:Object):Array {
    var keys:Array = [];
    for(var key in object){
        keys.push(key);
    }
    return keys;
}
但是请注意,运行时对象上键的可枚举顺序不一定与您在代码中编写的相同

根据Adobe的说法,“因此,你必须发明自己的订单。这可以通过使用键填充数组,然后对其进行排序来实现

function getKeyOrder(hash:Object, sortType:int = 3):Array {
    // Returns an array with sorted key values.
    /*
        1 = CASEINSENSITIVE
        2 = DESCENDING
        3 = ASCENDING
        4 = UNIQUESORT
        8 = RETURNINDEXEDARRAY
        16 = Array.NUMERIC
    */
    var order:Array = [];
    for (var k:String in hash) {
        order.push(k);
    }

    var reverse:Boolean = false;
    if (sortType == 3) {
        reverse = true;
        sortType = 2;
    }

    order.sort(sortType)
    if (reverse) { order.reverse(); }

    return order;
}


var screenWindowListObject:Object = {
    'something' : 'awesome',
    'evenmore'  : 'crazy',
    'evenless'  : 'foolish'
};

var orderedKeys:Array = getKeyOrder(screenWindowListObject);
for each (var key in orderedKeys) {
    trace(key + ":" + screenWindowListObject[key]);
}
/* Results in...
    evenless:foolish
    evenmore:crazy
    something:awesome
*/

trace("Index 0 = " + screenWindowListObject[orderedKeys[0]])
// Index 0 = foolish

getKeyOrder()
返回一个数组,默认情况下,数组中的键按升序排列。这样,您将保证始终具有相同的键序列,并且能够调出您要查找的索引。添加更多键时要小心,因为它会根据每个条目在排序中的显示位置进行移动。

这是一个奇怪的问题,因为这些键在运行时没有任何特定的顺序。您能告诉我们为什么要这样吗?对于您的用例,可能有更好的解决方案。例如,要获得一个对象的所有键,请参考@DodgerThud我已经更新了问题。如果你需要索引使用数组或向量,如果你不需要索引使用对象(因为你永远不会得到一个对象)@Vishnu看看,可能会有所帮助。