Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2014, 10:33
Новичок на форуме
Отправить личное сообщение для bolatik Посмотреть профиль Найти все сообщения от bolatik
 
Регистрация: 12.10.2013
Сообщений: 7

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

Пример:

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

результат

4 Life
Империя добра
Word of tanks
Ответить с цитированием
  #2 (permalink)  
Старый 16.01.2014, 11:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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 в 14:50.
Ответить с цитированием
  #3 (permalink)  
Старый 16.01.2014, 13:48
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от рони
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;
Ответить с цитированием
  #4 (permalink)  
Старый 16.01.2014, 14:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Яростный Меч,
ок ))) добавил и исправил -- сортировка по убыванию при условии что все элементы массива строки.
Ответить с цитированием
  #5 (permalink)  
Старый 16.01.2014, 14:58
Новичок на форуме
Отправить личное сообщение для bolatik Посмотреть профиль Найти все сообщения от bolatik
 
Регистрация: 12.10.2013
Сообщений: 7

Спасибо! Огромное спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с перебором массива qaim jQuery 6 30.05.2013 17:06
Помогите удалить элемент двумерного массива Dorsaj Общие вопросы Javascript 5 18.10.2010 18:49
Помогите разобраться с повторением при генерации массива (Javascript) JsLoveR Javascript под браузер 4 16.12.2009 15:26
Помогите решить задачку---Найти сумму элементов массива uniQ Общие вопросы Javascript 3 02.05.2009 01:20