Сортировка объекта JSON через JavaScript странные результаты - PullRequest
0 голосов
/ 22 августа 2011

Хорошо. Странные результаты, не такие, как они ожидаются. Однако я не уверен, как это преодолеть, у меня один из тех дней, когда каждая логическая вещь является эквивалентом огромного пердежа мозга для меня. Тем не мение. Скажем, ради простоты. Мой массив числовой, только там больше ничего. Мой массив варьируется от 1 до 50, поэтому мои результаты при сортировке похожи на 1, 10, 11, 12, 13 .... 2, 20, 21, 22, 23. ... и т. д. Когда мне нужно, чтобы это было 1,2,3,4,5,6,7,8,9,10,11,12 ...

Моя простая маленькая консервативная функция ..

function sortJSONresultsByWidgetID(a,b)
{   
    if(parseInt(a.wigetID) == parseInt(b.wigetID))
    {
        return 0;
    }
    return parseInt(a.wigetID) > parseInt(b.wigetID) ? 1 : -1;
}

для справки. Я анализирую из-за того, как JSON обрабатывает мой JSON, когда я отправляю его назад и вперед из БД, я сохраняю фактический JSON в БД, а при передаче его в PHP он заключает в кавычки число, поворачивающее их от INT до строки (или из того, что я заметил, это может быть на основе браузера).

Итак, я застрял сейчас, потому что хочу, чтобы эти вещи были перечислены в определенном порядке, и мой мозг не будет работать сегодня.

РЕДАКТИРОВАТЬ пример результатов сортировки меня:

dashboardJSON.widgets.sort(sortJSONresultsByWidgetID);

1 Ответ

1 голос
/ 22 августа 2011

Вам необходимо проанализировать целые числа с основанием 10 и использовать оператор === вместо ==. Я думаю, что это должно сделать.

function sortJSONresultsByWidgetID(a,b)
{
    var widgetAId = parseInt(a.wigetID, 10);
    var widgetBId = parseInt(b.wigetID, 10);

    if(widgetAId === widgetBId)
    {
        return 0;
    }
    return widgetAId > widgetBId ? 1 : -1;
}

ОБНОВЛЕНИЕ - Вот с оптимизацией Эллиана:

function sortJSONresultsByWidgetID(a,b)
{
    return parseInt(a.wigetID, 10) - parseInt(b.wigetID, 10);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...