通过JavaScript奇怪的结果对JSON对象进行排序

时间:2011-08-21 22:40:48

标签: javascript arrays json sorting

好的奇怪的结果,并不像预期的那么多。然而,我不知道如何过来,我有一天,每一个合乎逻辑的东西相当于一个巨大的脑屁对我来说。无论如何。让我们说为了安逸。我的数组只有数字,没有别的。我的数组范围是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;
}

供参考我parseInt由于JSON我的JSON处理方式,当我在数据库中来回发布时,我将实际的JSON存储在数据库中,当它传递给PHP时,它会在数字周围包围引号从INT到字符串(或者我注意到的可能是基于浏览器的)。

所以我现在陷入困境,因为我希望这些东西按特定顺序排列,我的大脑今天不会工作。

编辑我排序结果的例子:

dashboardJSON.widgets.sort(sortJSONresultsByWidgetID);

1 个答案:

答案 0 :(得分:1)

您需要使用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;
}

更新 - 这是Ellian的优化:

function sortJSONresultsByWidgetID(a,b)
{
    return parseInt(a.wigetID, 10) - parseInt(b.wigetID, 10);
}