Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Помогите с сортировкой массива (https://javascript.ru/forum/css-html/44336-pomogite-s-sortirovkojj-massiva.html)

bolatik 16.01.2014 10:33

Помогите с сортировкой массива
 
Сортировка, последовательность:
цифры => русские буквы => английские буквы

Пример:

массив
array("World of tans", "Империя добра", "4 Life")

результат

4 Life
Империя добра
Word of tanks

рони 16.01.2014 11:28

bolatik,
:-?
var arr = ["World of tans", "Империя добра", "4 Life", 1, 7, 81, 9];
 alert(arr.sort(
 function (a, b)
 {  a = ''+a; b=''+b;
    var len = Math.min(a.length,b.length), vol = {num : [3,/\d/], rus : [2,/[а-яё]/i], eng: [1,/[a-z]/i]},res = 0;

    for (var i=0; i<len; i++)  { var aa = 0, bb = 0;
      for(var k in vol) if (vol[k][1].test(a[i])) aa = vol[k][0];
      for(var k in vol) if (vol[k][1].test(b[i])) bb = vol[k][0];
      res = bb - aa;
      if (res) return res;
      if (b[i] > a[i]) return 1;
      if (b[i] < a[i]) return -1;
    }
    return a.length - b.length; }
 ));

Яростный Меч 16.01.2014 13:48

Цитата:

Сообщение от рони
if (b[i] > a[i]) return 1;
      if (b[i] < a[i]) return -1;
    }
    return 0

чуть подправлю:
if (b[i] > a[i]) return -1;
      if (b[i] < a[i]) return 1;
    }
    return a.length - b.length;

рони 16.01.2014 14:52

Яростный Меч,
ок ))) добавил и исправил -- сортировка по убыванию при условии что все элементы массива строки.

bolatik 16.01.2014 14:58

Спасибо! Огромное спасибо!


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