создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Урок 8. Функции для массивов в JavaScript

Содержание

Теория

Методы и функции: reverse, push, unshift, shift, pop, slice, splice, sort, Object.keys, reverse.

Метод reverse

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

Метод изменяет исходный массив (он станет перевернутым) и возвращает также перевернутый массив (можно пользоваться и так, и так).

Синтаксис: массив.reverse().

Пример

Перевернуть массив:

a=['a','b','c'];a.reverse();document.write(a)

Пример

В переменную b также запишется перевернутый массив:

a=['a','b','c'],b=a.reverse();document.write(b)

Пример

Перевернуть символы строки в обратном порядке. Для этого разбить строку в массив с помощью split по разделителю '' (этот разделитель положит каждый символ строки в отдельный элемент массива), перевернуть этот массив с помощью reverse и затем слить перевернутый массив обратно с помощью join:

s='123456789',a=s.split(''),a=a.reverse(),r=a.join('');document.write(r)

Пример

Упростить решение предыдущей задачи. Слить все команды в цепочку:

s='123456789',r=s.split('').reverse().join('');document.write(r)

Метод push

Метод push добавляет неограниченное количество элементов в конец массива. Элементы передаются параметром метода.

Метод изменяет исходный массив. Возвращает новую длину массива.

Синтаксис: массив.push(элемент, элемент, элемент,…).

Пример

В исходный массив добавлено 2 новых элемента и выведено содержимое нового массива:

a=['a','b','c'];a.push('d','e');document.write(a)

Пример

В исходный массив добавить 2 новых элемента и вывести новую длину массива:

a=['a','b','c'],b=a.push('d','e');document.write(b)

Пример

Заполнить массив числами от 1 до 10:

a=[];for(i=1;i<=10;i++){a.push(i)}document.write(a)

Метод unshift

Метод unshift добавляет любое количество новых элементов в начало массива.

Метод изменяет исходный массив. Возвращает новую длину массива.

Синтаксис: массив.unshift(элемент, элемент, элемент,…).

Пример

В начало исходного массива добавить еще 2 новых элемента и вывести уже новый, измененный массив:

a=['a','b','c'];a.unshift('d','e');document.write(a)

Пример

В начало исходного массива добавить еще 2 новых элемента и вывести новую длину массива:

a=['a','b','c'],b=a.unshift('d','e');document.write(b)

Метод shift

Метод shift удаляет 1-й элемент массива.

Метод изменяет исходный массив. Возвращает удаленный элемент.

Синтаксис: массив.shift().

Пример

Удалить 1-й элемент из массива:

a=['a','b','c','d','e'];a.shift();document.write(a)

Пример

Удалить 1-й элемент из массива и вывести его:

a=['a','b','c','d','e'];document.write(a.shift())

Пример

Пусть дан массив ['1','2','3','4','5','6']. Сделать из него строку '16-25-34'. Для решения задачи используем комбинацию методов shift, pop, push, join:

a=['1','2','3','4','5','6'],r=[];

while(a.length>0){//массив уменьшается в цикле, пока не достигнет 0

f=a.shift();l=a.pop(),s=f+l;//тут будет строка '16', потом '25', потом '34'

r.push(s)}

//После цикла в r лежит массив ['16','25','34']. Слить его в строку:

r=r.join('-');document.write(r)

Сократим код:

a=['1','2','3','4','5','6'],r=[];while(a.length>0){f=a.shift();l=a.pop(),s=f+l;r.push(s)}r=r.join('-');document.write(r)

Метод pop

Метод pop удаляет последний элемент массива.

Метод изменяет исходный массив. Возвращает удаленный элемент.

Синтаксис: массив.pop()

Пример

Из массива a удалить последний элемент:

a=['a','b','c','d','e'];a.pop();document.write(a)

Пример

Вывести последний элемент, который был удален из исходного массива:

a=['a','b','c','d','e'],e=a.pop();document.write(e)

Пример

Пусть дан массив ['1','2','3','4','5','6']. Сделать из него строку '16-25-34'. Для решения задачи использовать комбинацию методов pop, shift, push, join:

a=['1','2','3','4','5','6'],r=[];while(a.length>0){//массив уменьшается в цикле, пока не достигнет 0

f=a.shift(),l=a.pop(),s=f+l;//тут будет строка '16', потом '25', потом '34'

r.push(s)}//После цикла в r лежит массив ['16','25','34']. Слить его в строку:

r=r.join('-');document.write(r)

Сократим код:

a=['1','2','3','4','5','6'],r=[];while(a.length>0){f=a.shift(),l=a.pop(),s=f+l;r.push(s)}r=r.join('-');document.write(r)

Метод slice

Метод slice возвращает указанную часть массива.

1-м параметром указывается номер элемента массива, с которого начинается вырезание, а 2-м параметром - номер элемента, на котором закончится вырезание (при этом элемент с этим номером не включится в вырезанную часть).

2-й параметр не является обязательным. Если его не указать, подмассив возьмется с указанного в 1-м параметре элемента до конца массива.

2-й параметр также может принимать отрицательные значения. В этом случае отсчет элемента, на котором закончится обрезание, начинается с конца массива. Причем последний элемент имеет номер "-1", предпоследний - "-2" и так далее.

К примеру, если написать slice(1,-1), то вырезанная часть возьмется с 1-го элемента включительно по последний не включая его. Если нужно включить и последний элемент, нужно просто не задавать 2-й параметр для slice, вот так: slice(1).

Метод не изменяет исходный массив.

В массиве нумерация элементов начинается с 0.

Синтаксис: массив.slice(откуда отрезать, [докуда отрезать])

Пример

Вырезать из массива элементы с 0-го по 2-й не включительно (2-й не вырежется):

a=['a','b','c','d','e'];document.write(a.slice(0,2))

Пример

Вырезать с 1-го элемента до конца массива. Для этого 2-й параметр не задаем:

a=['a','b','c','d','e'];document.write(a.slice(1))

Пример

Вырезать элементы со 2-го по предпоследний (-1 указывает на последний элемент и он не включится в извлеченную часть):

a=['a','b','c','d','e'];document.write(a.slice(1,-1))

Преимущество такого подхода в том, что вырезаться всегда будет часть массива, не включая последний элемент, независимо от размера массива.

Метод splice

Метод splice удаляет или добавляет элементы в массив. Можно только удалять элементы, только добавлять или делать и то, и другое одновременно. Метод универсальный.

Метод изменяет сам массив и возвращает при этом массив удаленных элементов.

1-м параметром идет номер элемента массива, который нужно удалить.

2-м параметром - сколько элементов массива следует удалить. Если его поставить в 0, то элементы удалены не будут (только добавлены новые).

Дальше через запятую идут элементы, которые нужно добавить в массив (являются необязательными параметрами). Эти элементы добавятся вместо удаленных элементов массива.

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

1-й параметр может иметь отрицательное значение. В этом случае отсчет позиции начнется не с начала массива, а с конца. Причем последний элемент имеет номер '-1', предпоследний - '-2' и т.д.

Метод возвращает массив удаленных элементов.

Синтаксис: массив.splice(откуда удаляем,сколько элементов удаляем,[вставить элемент],[вставить элемент],…)

Пример

Из массива будут удалены элементы со 2-го, 3 штуки (это 'c','d','e'):

a=['a','b','c','d','e','f'];a.splice(2,3);document.write(a)

Пример

Из массива будут удалены со 2-го, 3 штуки (это 'c','d','e') и записаны в переменную d:

a=['a','b','c','d','e','f'],d=a.splice(2,3);document.write(d)

Результат: ['c','d','e'].

Пример

Сначала будет удален 3 элемент, потом вместо него вставлено еще 2 новых элемента ('1','2'):

a=['a','b','c','d'];a.splice(2,1,'1','2');document.write(a)

Пример

После 2-го элемента будут добавлены еще 2 элемента (т.к. 2-м параметром указан 0, то удаления не будет):

a=['a','b','c','d'];a.splice(2,0,'1','2');document.write(a)

Пример. Отрицательное значение

Удаляется предпоследний элемент 'e' (его номер -2):

a=['a','b','c','d','e','f'];a.splice(-2,1);document.write(a)

Метод sort

Метод sort производит сортировку массива в лексикографическом порядке.

Также можно указать параметром собственную функцию для сортировки, но это необязательно.

Посмотрите также видеоурок с подробным объяснением, как работает sort: youtu.be/O2pusOp0gC0

Синтаксис: массив.sort([функция])

Пример

Производится сортировка по алфавиту и выведен отсортированный массив:

a=["Банан","Апельсин","Яблоко","Манго"];document.write(a.sort())

Результат: [Апельсин,Банан,Манго,Яблоко].

Пример

Производится сортировка в соответствии с лексикографическим порядком:

a=[43,-3,10,100];document.write(a.sort())

Пример

В массиве производится сортировка по созданной функции:

function s(a,b){if(a>b)return -1;//или указать число меньше 0

if(a<b)return 1;//или указать цифру >0

if(a==b)return 0};a=[43,-3,10,100];document.write(a.sort(s))

Сократим код:

function s(a,b){if(a>b)return -1;if(a<b)return 1;if(a==b)return 0};a=[43,-3,10,100];document.write(a.sort(s))

Функция Object.keys

Функция Object.keys получает ключи объекта в виде массива.

Синтаксис: Object.keys(объект)

Пример

Получить ключи объекта в виде массива:

o={a:1,b:2,c:3};document.write(Object.keys(o))

Метод reverse

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

Метод изменяет исходный массив (он станет перевернутым) и возвращает перевернутый массив (можно пользоваться и так, и так).

Синтаксис: массив.reverse()

Пример

Перевернуть массив:

a=['a','b','c'];a.reverse();document.write(a)

Пример

В переменную b записать перевернутый массив:

a=['a','b','c'],b=a.reverse();document.write(b)

Пример

Перевернуть символы строки в обратном порядке. Для этого разбить строку в массив с помощью split по разделителю '' (этот разделитель положит каждый символ строки в отдельный элемент массива), перевернуть этот массив с помощью reverse и слить перевернутый массив обратно с помощью join:

s='123456789',a=s.split(''),a=a.reverse(),r=a.join('');document.write(r)

Пример

Упростить решение предыдущей задачи, слить все команды в цепочку:

s='123456789',r=s.split('').reverse().join('');document.write(r)

Практика

Примеры решения задач

Задача

Даны 2 массива: ['a','b','c'] и [1,2,3]. Объединить их вместе методом concat.

Решение:

a=['a','b','c'],b=[1,2,3];

/*Вариант 1:*/var c=a.concat(b);document.write(c)//получится массив ['a','b','c',1,2,3]

/*Вариант 2:*/var c=b.concat(a);document.write(c)//получится массив [1,2,3,'a','b','c']

Сократим код:

a=['a','b','c'],b=[1,2,3],c=a.concat(b);document.write(c);var c=b.concat(a);document.write('<p>',c)

Задача

Дан массив ['a','b','c']. Добавить в конец массива элементы 1,2,3 методом push.

Решение:

a=['a','b','c'];a.push(1,2,3);document.write(a)

Задачи для решения

Работа с concat

Даны 2 массива: [1,2,3] и [4,5,6]. Объединить их вместе.

Работа с reverse

Дан массив [1,2,3]. Сделать из него массив [3,2,1].

Работа с push, unshift

Дан массив [1,2,3]. Добавить в конец массива элементы 4,5,6.

Дан массив [1,2,3]. Добавить в начало массива элементы 4,5,6.

Работа с shift, pop

Дан массив ['js','css','jq']. Вывести 1-й элемент.

Дан массив ['js','css','jq']. Вывести последний элемент.

Работа с slice

Дан массив [1,2,3,4,5]. Записать в новый массив элементы [1,2,3].

Дан массив [1,2,3,4,5]. Записать в новый массив элементы [4,5].

Работа с splice

Дан массив [1,2,3,4,5]. Преобразовать массив в [1,4,5].

Дан массив [1,2,3,4,5]. Записать в новый массив элементы [2,3,4].

Дан массив [1,2,3,4,5]. Сделать из него массив [1,2,3,'a','b','c',4,5].

Дан массив [1,2,3,4,5]. Сделать из него массив [1,'a','b',2,3,4,'c',5,'e'].

Работа с sort

Дан массив [3,4,1,2,7]. Отсортировать массив.

Работа с Object.keys

Дан объект {js:'test',jq:'hello',css:'world'}. Получить массив его ключей.

Содержание

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting