Сортировка массива
Имеется массив
var arr = [ "art221827", "mus14111", "vid34343", "fol232926", "str34222", "sml161617", "all111456", "ind30040"] Подскажите, как правильно его отсортировать. По отдельности методы для строк и для чисел не подходят. :help: |
Методы для строк и чисел по отдельности сортируют не так как необходимо(
|
javaphp,
а как необходимо? |
нужно чтобы сначала сортировка была как для строк учитывая первые три буквы элементов массива, а дальше по числам. Проблема в том что числовая составляющая в элементах массива может быть разной длины
|
если б строковая и числовая составляющие были одинаковые, то можно использовать сортировку для строк. Не пойму как правильно разбить каждый элемент на строковую составляющую и числовую. Сначала сортировать по той части которая строка а затем по числовой.
|
javaphp,
результат сортировки напишите |
Вот например, второй и третий элементы отсортированы неправильно. нужно поменять их местами в результате.
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); |
|
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); |
:-?
Цитата:
|
Часовой пояс GMT +3, время: 09:47. |