0

私はこれに苦労しています。私はここで他の質問を経験しました、そして私が私がすることになっていることをしていると私が言うことができる限り。簡単そうに見えますが、まだ電話が切れています。これが私のXMLです:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
    <player>
        <score Name="Josh" Company="AB" Email="josh@ab">200</score>
    </player>
    <player>
        <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
    </player>
    <player>
        <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
    </player>

</objects>

そして、これが私のコードです。XMLの「スコア」データを「foreach」ループを使用して配列「myArray」に入れています。これは正常にトレースされますが、並べ替えではスコアで並べ替えられません。

var myArray:Array = new Array();

    for each (var item:XML in scores)
    {
        myArray.push(item);
    }
    trace("pre-sort "+myArray);

    myArray.sortOn("score", Array.NUMERIC | Array.DESCENDING);

    trace("post-sort "+myArray);

繰り返しになりますが、これは本当に簡単に思えますが、私は頭をキーボードにぶつけています。どんな助けでも大歓迎です。

4

2 に答える 2

2

私はXMLが苦手ですが、これはうまくいくようです。スコアをscores.children()に変更しました。

var scores:XML = <objects>
        <player>
          <score Name="Josh" Company="AB" Email="josh@ab">200</score>
        </player>
        <player>
          <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
        </player>
        <player>
          <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
        </player>
        </objects>;

var myArray:Array = new Array();

for each (var item:XML in scores.children())
{
    myArray.push(item);
}
trace("pre-sort "+myArray);

myArray.sortOn("score", Array.NUMERIC | Array.DESCENDING);

trace("post-sort "+myArray);
于 2012-07-20T18:24:37.877 に答える
0

sortOnは、オブジェクトで満たされた配列をプロパティ フィールドに基づいて並べ替えるためのものですが、配列を XML ノードで埋めており、これらのノードには直接「スコア」という名前のプロパティはありません

関数 sort を単独で使用して、必要な結果を得ることができます。

var xml:XML=
<objects>
    <player>
        <score Name="Josh" Company="AB" Email="josh@ab">200</score>
    </player>
    <player>
        <score Name="Shain" Company="AC" Email="shain@AC.com">1800</score>
    </player>
    <player>
        <score Name="Jessica" Company="AD" Email="jessica@AD.com">20000</score>
    </player>
</objects>;

var myArray=[];
for each (var score:XML in xml..score) {
 myArray[myArray.length] = score;
}

myArray.sort(Array.NUMERIC | Array.DESCENDING);
trace("post-sort "+myArray);

wonderfl の実際の例: http://wonderfl.net/c/c6av

于 2012-07-20T18:43:42.633 に答える