使用下划线sortBy方法对对象数组进行排序

时间:2013-04-27 14:51:49

标签: underscore.js sorting

我有一个对象数组,我想用'home'的值对ASC那个数组进行排序。该字段始终为数字。所以我试过这个:

_.sortBy(data.home.en, function(obj){ return obj.home });

当'home'的值低于10时运行良好,但由于某种原因10在1之后,所以我的最终订单看起来像这样1,10,11,2,3,4,5, 6,7,8,9。为什么会这样?感谢...

1 个答案:

答案 0 :(得分:27)

您的obj.home值是字符串,因此它们被比较为字符串,'1' < '10'为真。如果您想对它们进行排序,请将它们转换为数字:

_.sortBy(data.home.en, function(obj){ return +obj.home });

或:

_.sortBy(data.home.en, function(obj){ return parseInt(obj.home, 10) });

演示:http://jsfiddle.net/ambiguous/DpfgV/1/