通过每个对象具有的属性对对象数组进行排序时产生异常结果

时间:2013-02-28 04:57:03

标签: javascript arrays object sorting

我正在尝试按每个对象拥有的属性rank对对象数组进行排序。 This似乎是公认的做法。但是,它似乎没有正常工作。

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属性正确排序对象数组?

1 个答案:

答案 0 :(得分:3)

There is nothing wrong with your custom sort。您的第一段代码会调用waypoints.sort()两次。第二种是排序;删除它。