我有一个对象数组,我想用'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。为什么会这样?感谢...
答案 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) });