0

rankオブジェクトの配列を、各オブジェクトが持つプロパティで並べ替えようとしています。これはそれを行うための受け入れられた方法のようです。ただし、正しく機能していないようです。

var waypoints = ig.game.getEntitiesByType(EntityWaypoint); // returns array of objects
// This line tells sort to order by Array[i].rank
waypoints.sort(function(a,b) {return (a.rank < b.rank) ? -1 : (a.rank > b.rank) ? 1 : 0;});
waypoints.sort();
for( var i=0; i<waypoints.length; i++ ) {
    console.log(waypoints[i].rank);
}

コンソールは次のようになります。

4
1
2
3
5
6
7

次のバリエーションも試してみましたが、同じ結果になります。

waypoints.sort(function(a,b) {return (parseInt(a.rank) < parseInt(b.rank)) ? -1 : (parseInt(a.rank) > parseInt(b.rank)) ? 1 : 0;});

rankこれが各オブジェクトのプロパティによってオブジェクトの配列を適切にソートしないのはなぜですか?

4

1 に答える 1

3

カスタムソートに問題はありません。最初のコードはwaypoints.sort()2回呼び出されます。2番目の種類は、順序をいじくりまわすことです。それを除く。

于 2013-02-28T05:02:43.050 に答える