获取索引 x 处的对象的键
get key of a object at index x
Flex中如何获取对象指定索引处的key?
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 中是否有任何等效项?
我有一个带有唯一键的对象。值不是唯一的。我通过将它们添加到数组集合来显示 DropDownList 中的值。我必须根据选定的索引从对象中获取密钥。
JavaScript 的 Object.keys
使用与 for..in
循环相同的顺序,所以在 AS3 中你可以用同样的方式实现它:
function getKeys(object:Object):Array {
var keys:Array = [];
for(var key in object){
keys.push(key);
}
return keys;
}
但请注意,运行时对象上键的可枚举顺序不一定与您在代码中编写的顺序相同。
根据 Adobe 的说法,“Object properties are not kept in any particular order, so properties may appear in a seemingly random order.”因此,您必须发明自己的顺序。这可以通过用您的键填充一个数组,然后对其进行排序来实现。
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()
returns 默认情况下,您的键按升序排列的数组。这样,您就可以保证始终拥有相同的键序列,并且能够调出您要查找的索引。添加更多键时要小心,因为它会根据它在排序中出现的位置移动每个条目。
Flex中如何获取对象指定索引处的key?
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 中是否有任何等效项?
我有一个带有唯一键的对象。值不是唯一的。我通过将它们添加到数组集合来显示 DropDownList 中的值。我必须根据选定的索引从对象中获取密钥。
JavaScript 的 Object.keys
使用与 for..in
循环相同的顺序,所以在 AS3 中你可以用同样的方式实现它:
function getKeys(object:Object):Array {
var keys:Array = [];
for(var key in object){
keys.push(key);
}
return keys;
}
但请注意,运行时对象上键的可枚举顺序不一定与您在代码中编写的顺序相同。
根据 Adobe 的说法,“Object properties are not kept in any particular order, so properties may appear in a seemingly random order.”因此,您必须发明自己的顺序。这可以通过用您的键填充一个数组,然后对其进行排序来实现。
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()
returns 默认情况下,您的键按升序排列的数组。这样,您就可以保证始终拥有相同的键序列,并且能够调出您要查找的索引。添加更多键时要小心,因为它会根据它在排序中出现的位置移动每个条目。