4

このシーケンスでプロパティを追加するオブジェクトがあります。

Home
School
living
status
sound
Memory

オブジェクトをループすると、その順序で出てきません。どうすればこの順番で出てくることができますか。

データはオブジェクトです

for (var i:String in data)
{
    trace(i + ": " + data[i]);
}

多分それを分類する方法はありますか?

4

2 に答える 2

9

プロパティにアクセスできる順序を並べ替える唯一の方法は、手動です。これを行うために作成した関数を次に示します。

function getSortedPairs(object:Object):Array
{
    var sorted:Array = [];

    for(var i:String in object)
    {
        sorted.push({ key: i, value: object[i] });
    }

    sorted.sortOn("key");

    return sorted;
}

トライアル:

var test:Object = { a: 1, b: 2, c: 3, d: 4, e: 5 };
var sorted:Array = getSortedPairs(test);

for each(var i:Object in sorted)
{
    trace(i.key, i.value);
}
于 2012-06-29T04:17:06.173 に答える
1

マーティが共有したリンクは、何が起こっているのかをよく説明しており、彼の答えも優れています。

順序が重要な場合に検討できるもう 1 つの解決策は、Vector.

// Init the vector
var hectorTheVector:Vector.<String> = new Vector.<String>();

// Can add items by index
hectorTheVector[0] = "Home";
hectorTheVector[1] = "School";
hectorTheVector[2] = "living";

// Or add items by push
hectorTheVector.push("status");
hectorTheVector.push("sound");
hectorTheVector.push("Memory");

//See all items in order
for(var i:int = 0; i < hectorTheVector.length; i++){
    trace(hectorTheVector[i]);
}

/* Traces out:
Home
School
living
status
sound
Memory
*/

AnArrayも秩序を維持します。here は配列のソートに関する良いトピックです

于 2012-06-29T04:30:17.687 に答える