10

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

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

当“家”的值低于 10 时效果很好,但由于某种原因,10 就在 1 之后,所以我的最终订单看起来像这样 1,10,11,2,3,4,5,6,7 ,8,9 。为什么会这样?谢谢...

4

1 回答 1

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/

于 2013-04-27T18:14:59.300 回答