17.06.2009, 15:27
общий
это ответ
Здравствуйте, Dima1967.
Можно сравнивать элементы, но это путь, откровенно говоря, топорный. Гораздо лучше было бы на Вашем месте вспомнить, что Ваш массив - это Javascript-объект типа Array. А у объектов данного типа есть метод sort(compareFunction), где compareFunction - ссылка на функцию сравнения. Ее, эту функцию, с помощью которой Вы хотите упорядочивать массив, надо написать предварительно, но это параметр необязательный. Но так как, насколько я понимаю, члены массива упорядочиваются у Вас не в слишком алфавитном порядке, напишем функцию. Итак, общий код примерно следующий:
// функция сравнения должна возвращать следующие значения:
// 1, если a следует после b
// 0, если порядок следования не меняется
// -1, если b следует после a
function compare(a, b) {
var p_a = a.split('_');
var p_b = b.split('_');
// теперь переходим непосредственно к сравнению строк
if (p_a[0] < p_b[0]) {
// если первая цифра первого числа меньше, чем первая цифра второго числа, то вторая строка следует за первой
return -1;
}
if (p_a[0] > p_b[0]) {
// если первая цифра первого числа больше, чем первая цифра второго числа, то первая строка следует за второй
return 1;
}
if (p_a[0] == p_b[0]) {
// если первые цифры обоих чисел равны, то сравниваем вторые числа
if (p_a[1] < p_b[1]) {
// если второе число больше первого, вторая строка следует за первой
return -1;
} else {
// а здесь наоборот
return 1;
}
}
}
var a = [1,1_1...]; // исходный массив
var b = a.sort(compare); // получаем нужный нам массив.
С уважением, Товарищ Бородин