Функции перестановки элементов массива

К функциям перестановки элементов массива относятся функции reverse()и sort().

Функция

reverse()

переставляет элементы массива в обратном порядке: первый элемент становится последним, а последний первым.

Функция

sort(функция-сравнения),

сортирует элементы массива в соответствии с заданным в функции с именем функция-сравнения алгоритмом.

Если параметр функция-сравнения не задан, элементы массива переводятся в строковое представление и сортируются как строки, в соответствии с возрастанием кодов символов (такой порядок сортировки называют лексикографическим). При лексикографической сортировке элемент массива со значением 12 будет идти до элемента массива со значением 2, поскольку код символа "1" меньше кода символа "2".

Если задана функция с именем функция-сравнения, то она должна иметь следующий вид:

function функция-сравнения (a, b)

{

if(a меньше b по какому-либо критерию)

return значение, меньшее 0;

if(a равно b по какому-либо критерию)

return 0;

if(a больше b по какому-либо критерию)

return значение, большее 0;

}

Ниже приведено несколько распространенных функций сравнения:

1. Сортировка строк по убыванию кодов символов:

function descendingString(a, b)

{

if(a > b)

return -1;

if(a == b)

return 0;

if(a < b)

return 1;

}

 

2. Сортировка чисел по возрастанию:

function ascendingNumber(a, b)

{

return a - b;

}

 

3. Сортировка чисел по убыванию:

function descendingNumber(a, b)

{

return b - a;

}

 

Пример 4.4.41. Перестановка элементов массива:

1. // Инициализация массива a

a = [1, 2, 3, 4];

// Перестановка элементов массива a в обратном порядке

a.reverse();

// Вывод массива a

alert("a=" + a);

Вывод фрагмента сценария будет иметь следующий вид:

 

2. // Инициализация массива b

b = ["персик", "абрикос", "слива", "яблоко",

"апельсин", "груша"];

// Сортировка элементов массива b

// в лексикографическом порядке

b.sort();

// Вывод массива b

alert("b=" + b);

Вывод фрагмента сценария будет иметь следующий вид:

 

3. // Инициализация массива d

d = [5, 17, 3, 9, 2, 18, 6];

// Сортировка элементов массива d

// в обратном порядке в соответствии

// с функцией сравнения descendingNumber

d.sort(descendingNumber);

// Вывод массива d

alert("d=" + d);

Вывод фрагмента сценария будет иметь следующий вид:

4.4.11.2.4. Функция определения «сечения» массива

Функция определения «сечения» массива

slice(индекс-1, индекс-2)

выделяет из массива фрагмент и возвращает полученный фрагмент по следующему алгоритму:

· если значение индекс-2 не отрицательно, то фрагмент выделяется из массива, начиная с индекс-1 и заканчивая индекс-2 - 1;

· если значение индекс-2 отрицательно, то фрагмент выделяется из массива, начиная с индекс-1 и заканчивая размер-массива - индекс-2 - 1;

· если значение индекс-2 не задано, то фрагмент выделяется из массива, начиная с индекс-1 и до конца массива.

 

Пример 4.4.42. Получение «сечения» массива:

// Инициализация массива b

b = [5, 17, 3, 9, 2, 18, 6];

// Массив b1 – сечение массива b

// (элементы c индексами от 2 до 5 включительно)

b1 = b.slice(2, 6);

// Массив b2 – сечение массива b

// (элементы от 2 до 3 включительно)

b2 = b.slice(2, -3);

// Массив b3 – сечение массива b

// (элементы от 2 до конца массива)

b3 = b.slice(2);

// Вывод массивов b1, b2 и b3

alert("b1=" + b1 + "\nb2=" + b2 + "\nb3=" + b3);

Вывод фрагмента сценария будет иметь следующий вид: