Подтвердить что ты не робот

Сортировка массива объектов методом подчёркивания sortBy

У меня есть массив объектов, и я хочу отсортировать массив ASC по значению "home". Это поле всегда числовое. Поэтому я пробовал это:

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

Это хорошо работает, когда значение "home" ниже 10, но по какой-то причине 10 идет сразу после 1, поэтому мой окончательный порядок выглядит примерно так: 1,10,11,2,3,4,5, 6,7,8,9. Почему это происходит? Спасибо...

4b9b3361

Ответ 1

Значения obj.home - это строки, поэтому они сравниваются как строки, а '1' < '10' - true. Если вы хотите отсортировать их как числа, то преобразуйте их в числа:

_.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/