在 webkit 浏览器中对数组进行排序的问题

Issue to sort array in webkit browsers

我在 webkit 浏览器中对数组进行排序时遇到问题。在 firefox 中,排序效果很好,但在 chrome 或 safari 中,它只对我最后的 if() 语句进行排序。例如,在这段代码中,它只对这个块进行排序: (if 条件已经过测试并且有效)

if(printCategory == printCategoryTour)
    {
        function compare (a, b) {

        return b.tour_naechtigungen - a.tour_naechtigungen

    };
        chartDataRegions.sort(compare);
        pushValues();
    }

关于这个函数:

function chartDataSortArray() 

{       

    arraySorted = [];

    if(printCategory == printCategoryBev)
    {
        function compare (a, b) {

        return b.bev - a.bev;

        };
        chartDataRegions.sort(compare);

        pushValues();
    }
    if(printCategory == printCategoryWirt)
    {
        function compare (a, b) {

        return b.wirt_unt_anzahl - a.wirt_unt_anzahl

        };
        chartDataRegions.sort(compare);
        pushValues();           
    }
    if(printCategory == printCategoryMob)
    {
        function compare (a, b) {

        return b.mob_einpendler - a.mob_einpendler 

        };
        chartDataRegions.sort(compare);
        pushValues();
    }
    if(printCategory == printCategoryTour)
    {
        function compare (a, b) {

        return b.tour_naechtigungen - a.tour_naechtigungen

        };
        chartDataRegions.sort(compare);
        pushValues();
    }   

function pushValues()
{   
    for(i = 0; i<chartDataRegions.length; i++)
{
    arraySorted.push(chartDataRegions[i])

}
}

嗯,我现在试了 2 个小时,但还是没用! 有人发现问题了吗?

设置一次比较功能! 它看起来更好并且可以跨浏览器工作

function chartDataSortArray() 

{       

        arraySorted = [];

            function compare (a, b) {
                if(printCategory == printCategoryBev)
                    {
                        return b.bev - a.bev;
                    }
                if(printCategory == printCategoryWirt)
                    {
                        return b.wirt_unt_anzahl - a.wirt_unt_anzahl;
                    }
                if(printCategory == printCategoryMob)
                    {
                        return b.mob_einpendler - a.mob_einpendler
                    }
                if(printCategory == printCategoryTour)
                    {
                        return b.tour_naechtigungen - a.tour_naechtigungen
                    }
                };
            function pushValues()
            {   
                for(i = 0; i<chartDataRegions.length; i++)
                    {
                        arraySorted.push(chartDataRegions[i])
                    }
            }


    chartDataRegions.sort(compare);

    pushValues();

}