2015-02-23 2 views
0

У меня проблема при сортировке массивов в браузерах webkit. В firefox сортировка работает очень хорошо, но в хроме или сафари она сортирует только мой последний оператор if(). Например, в этом коде сортирует только этот блок: (Условное условие испытания и работу)Проблема для сортировки массива в браузерах webkit

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 часа, но я не получаю это работать! Кто-нибудь находит проблему?

+1

Можете ли вы создать jsfiddle, чтобы показать проблему? –

+1

здесь вы получаете URL-адрес страницы. Если вы нажмете на кнопку nav, диаграмма в нижнем слайде покажет значения отсортированные! И эта работа работает только на последней кнопке [link] (http://weedmap.de) – Manuel

+0

WeedMap.de! хорошо ОК –

ответ

1

Установите функцию сравнения один раз! Это выглядит лучше и работает crossbrowser

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(); 

} 
+1

приятно спасибо! – Manuel

Смежные вопросы