Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.03.2016, 19:04
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

Сортировка массива
Имеется массив
var arr = [ "art221827", "mus14111", "vid34343", "fol232926", "str34222", "sml161617", "all111456", "ind30040"]

Подскажите, как правильно его отсортировать. По отдельности методы для строк и для чисел не подходят.
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2016, 19:05
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

Методы для строк и чисел по отдельности сортируют не так как необходимо(
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2016, 19:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

javaphp,
а как необходимо?
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2016, 19:45
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

нужно чтобы сначала сортировка была как для строк учитывая первые три буквы элементов массива, а дальше по числам. Проблема в том что числовая составляющая в элементах массива может быть разной длины
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2016, 19:53
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

если б строковая и числовая составляющие были одинаковые, то можно использовать сортировку для строк. Не пойму как правильно разбить каждый элемент на строковую составляющую и числовую. Сначала сортировать по той части которая строка а затем по числовой.
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2016, 20:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

javaphp,
результат сортировки напишите
Ответить с цитированием
  #7 (permalink)  
Старый 05.03.2016, 20:49
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

Вот например, второй и третий элементы отсортированы неправильно. нужно поменять их местами в результате.
function compareNumeric(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
}

var arr = [ "art221827", "mus141111", "mus14114", "vid34343", "fol232926", "str34222", "sml161617", "all111456", "ind30040"];

arr.sort(compareNumeric);

alert(arr);
Ответить с цитированием
  #8 (permalink)  
Старый 05.03.2016, 20:49
Интересующийся
Отправить личное сообщение для javaphp Посмотреть профиль Найти все сообщения от javaphp
 
Регистрация: 02.01.2016
Сообщений: 28

https://jsfiddle.net/9u9odnt2/
Ответить с цитированием
  #9 (permalink)  
Старый 05.03.2016, 20:53
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

var arr = [ "art221827", "mus14111", "vid34343", "fol232926", "str34222", "sml161617", "all111456", "ind30040"];
  
arr.sort((a,b) => {
  var A = a.match(/(\D+)(\d+)/),
      B = b.match(/(\D+)(\d+)/);

  return A[1] > B[1] && +A[2] > +B[2] ? 1 : A[1] < B[1] && +A[2] < +B[2] ? -1 : 0
});
  
alert(arr);

Последний раз редактировалось Lemme, 05.03.2016 в 20:59.
Ответить с цитированием
  #10 (permalink)  
Старый 05.03.2016, 21:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


Сообщение от рони
результат сортировки напишите
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непростая задача, сортировка массива Gerd199 Общие вопросы Javascript 0 15.02.2016 03:22
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Сортировка массива по ключу RazZzeR Элементы интерфейса 9 21.07.2012 19:31
Сортировка двумерного массива методом пузырька lammeR Общие вопросы Javascript 31 01.07.2012 20:48
сортировка массива с сохранением ассоциации индексов HelpeR Элементы интерфейса 1 24.02.2010 11:00