Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировка массива (https://javascript.ru/forum/events/61735-sortirovka-massiva.html)

javaphp 05.03.2016 21:14

Результат сортировки:
all111456, art221827, fol232926, ind30040, mus141111, mus14114, sml161617, str34222, vid34343

А должно получиться:
all111456, art221827, fol232926, ind30040, mus14114, mus141111, sml161617, str34222, vid34343

рони 05.03.2016 21:18

javaphp,
<p> А должно получиться:</p>
  <p>all111456, art221827, fol232926, ind30040, mus14114, mus141111, sml161617, str34222, vid34343</p>

 <script>
     var arr =  [ "art221827", "mus141111", "mus14114", "vid34343", "fol232926", "str34222", "sml161617", "all111456", "ind30040"];
     function fn(a,b)
     {
          var aa = a.replace(/\d+/g,""), bb = b.replace(/\d+/g,"");
          a = a.replace(/\D+/g,"");
          b = b.replace(/\D+/g,"");
          return  (aa > bb ) - (bb > aa) || a - b
     }
    arr.sort(fn);
    document.write(JSON.stringify(arr))
  </script>

javaphp 05.03.2016 22:57

Уже разобрался. Рассмотрел 3 случая когда строковые части A и B: 1) < 2) > 3) == .

Если вариант 3) когда == , то сравнивал числовые части A и B. И все получилось.
Спасибо за подсказку с регулярными выражениями.


Часовой пояс GMT +3, время: 11:10.