Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Задачи и упражнения по JavaScript. Учебное пособие
.pdf
если a > b; отрицательное значение, если a < b; если равны –
можно 0, но вообще – не важно, что возвращать, если их взаимный порядок не имеет значения.
concat(массив/значения) в новый массив, записывает
содержание исходного массива и значения всех аргументов,
переданных методу:
var x=[100,-6,25,1];
var x2=x.concat(7,12); //100,-6,25,1,7,12
slice(индекс1 [, индекс2]) возвращает фрагмент или
подмассив исходного массива:
var x=[1,2,3,true,100,-6];
var x1=x.slice(1,5); //2,3,true,100
splice(индекс, количество[элемент1,…, элементk]),
если метод имеет два параметра,то из исходного массива удаляет “количество” элементов, начиная с индекса “индекс”, и
возвращает массив из удаленных элементов, иначе в массив
еще вставляются “элемент1,…, элементk”:
а) var x=[1,2,3,true,100,-6];
var x1=x.splice(1,4); // x = 1,-6; x1 = 2,3,true,100
б) var x=[1,2,3,true,100,-6];
var x1=x.splice(1,4,"a","B"); // x = 1,a,B,-6;
x1 = 2,3,true,100
Методы для добавления и удаления элементов
unshift(значение) добавляет элемент в начало массива:
var x=[1,2,3,true,100,-6];
x.unshift (0); //0,1,2,3,true,100,-6
push(значение)добавляет элемент в конец массива:
var x=[1,2,3,true,100,-6];
x. push (0); //1,2,3,true,100,-6,0
shift() удаляет первый элемент массива:
var x=[1,2,3,true,100,-6];
x.shift(); //2,3,true,100,-6
51

рор() удаляет последний элемент массива:
var x=[1,2,3,true,100,-6];
x.рор (); //1,2,3,true,100
Ассоциативные массивы (везде так сделать)
В ассоциативных массивах обращение к элементу массива происходит по индексу, представляющему собой строку.
var Mass = new Array();
Mass["Один"] = 1;
Mass["Два"] = 2;
Mass["Три"] = 3;
Перебор всех элементов ассоциативного массива осуществляется с помощью цикла for…in. Например, распечатать элементы массива можно следующим образом:
for (var Name in Mass) {
document.write(Name + " = " + Mass[Name] + "<br>");
Упражнения
Задание 1
Написать скрипт, который заполняет массив следующим образом: в первый элемент запишите '1', во второй '22', в
третий '333' и т.д.
Задание 2
Написать скрипт, который заполняет массив следующим
образом: в первый элемент записывает 'x', во второй 'xx', в третий 'xxx' и т.д.
Задание 3
Дан массив с числами. Определить, сколько элементов с
начала массива надо сложить, чтобы в сумме получилось
больше 10-ти.
52

Задание 4
Дан массив с числами. Проверьте, есть ли в нем два одинаковых числа подряд. Если есть – выведите 'да', а если нет –
выведите 'нет'.
Задание 5
Дан массив чисeл arr. Создать массивы, в которых элементы массива arr расположены в обратном порядке: arr1, используя метод reverse, и arr2 без использования метода.
Задание 6
Переменная lang может принимать два значения: 'ru' и
'en'. Если она имеет значение 'ru', то в переменную arr записать
массив дней недели на русском языке, а если имеет значение
'en' – то на английском. Решить задачу, используя два оператора if.
Задание 7
Переменная lang может принимать два значения: 'ru' и
'en'. Если она имеет значение 'ru', то в переменную arr записать
массив дней недели на русском языке, а если имеет значение
'en' – то на английском. Решить задачу, используя оператор
switch-case.
Задание 8
Дан двумерный массив чисел, например [[1, 2], [3, 4, 5],
[6]]. Найти сумму элементов этого массива.
Задание 9
Дан двумерный массив символов. Выписать предложение, записанное в этом массиве, если каждая его строка это
есть отдельное слово предложения.
53

Задание 10
Заполнить квадратную матрицу n × n так, чтобы все
числа первого столбца и первой строки были равны 1, а каждое из оставшихся чисел равно сумме верхнего и левого соседей. Вывести на экран заполненную матрицу.
Задание 11
Переменная lang может принимать два значения: 'ru' и
'en'. Если она имеет значение 'ru', то в переменную arr записать
массив дней недели на русском языке, а если имеет значение
'en' – то на английском. Решить задачу через многомерный
массив.
Задание 12
Создать двухмерный массив. Первые два ключа – это
'ru' и 'en'. Пусть первый ключ содержит элемент, являющийся
массивом названий дней недели по-русски, а второй – по-английски. Вывести с помощью этого массива понедельник порусски и среду по-английски.
Задание 13
Пусть многомерный массив arr содержит названия цветов по-русски и по-английски. Ввести название цвета по порусски и получить его английский эквивалент, и наоборот.
Задание 14
Дан трехмерный массив с числами, например [[[1, 2], [3,
4]], [[5, 6], [7, 8]]]. Найти сумму элементов этого массива.
Задания на массивы с использованием
пользовательских функций
Задание 1
Написать скрипт, который сортирует массив чисел по
убыванию. Сортировку оформить в виде функции, поместив
54

ее в js-файл. Cоздать объект типа Array и отсортировать его
соответствующим образом, используя функцию этого класса.
Задание 2
Написать скрипт, который сортирует массив чисел следующим образом: сначала располагаются положительные
числа, потом отрицательные. Сортировку оформить в виде
функции, поместив ее в js-файл. Cоздать объект типа Array и
отсортировать его соответствующим образом, используя
функцию этого класса.
Задание 3
Написать скрипт, который сортирует массив чисел следующим образом: сначала располагаются четные числа, потом нечетные. Сортировку оформить в виде функции, поместив ее в js-файл. Cоздать объект типа Array и отсортировать
его соответствующим образом, используя функцию этого
класса.
Задание 4
Написать скрипт, который сортирует массив чисел следующим образом: сначала располагаются нечетные числа, потом четные. Сортировку оформить в виде функции, поместив
ее в части head html-файла. Cоздать объект типа Array и отсортировать его соответствующим образом, используя функцию
этого класса.
Задание 5
Написать скрипт, который сортирует массив чисел следующим образом: сначала располагаются простые числа, потом составные. Сортировку оформить в виде функции, поместив ее в части head html-файла. Cоздать объект типа Array и
отсортировать его соответствующим образом, используя
функцию этого класса.
55

Задание 6
Написать скрипт, который сортирует массив чисел следующим образом: сначала располагаются числа, которые делятся на 2, потом на 3 и т.д. Сортировку оформить в виде
функции, поместив ее в части head html-файла. Создать объект
типа Array и отсортировать его соответствующим образом,
используя функцию этого класса.
Задание 7
Написать скрипт, который располагает элементы массива в обратном порядке от исходного. Оформить в виде
функции, поместив ее в части head html-файла. Создать объект
типа Array и отсортировать его соответствующим образом,
используя функцию этого класса.
Задание 8
Написать скрипт, который сортирует массив строк по
возрастанию их длин. Сортировку оформить в виде функции,
поместив ее в части head html-файла. Создать объект типа Array и отсортировать его соответствующим образом, используя
функцию этого класса.
Задание 9
Написать скрипт, который сортирует массив строк по
убыванию их длин. Сортировку оформить в виде функции, поместив ее в части head html-файла. Создать объект типа Array
и отсортировать его соответствующим образом, используя
функцию этого класса.
Задание 10
Написать скрипт, который сортирует массив строк по
возрастанию количества гласных в строке. Сортировку оформить в виде функции, поместив ее в части head html-файла.
Создать объект типа Array и отсортировать его соответствующим образом, используя функцию этого класса.
56

Задание 11
Написать скрипт, который сортирует массив строк по
возрастанию без учета регистра. Сортировку оформить в виде
функции, поместив ее в части head html-файла. Cоздать объект
типа Array и отсортировать его соответствующим образом,
используя функцию этого класса.
Задание 12
Написать скрипт, который сортирует массив строк по
убыванию их длин. Сортировку оформить в виде функции, поместив ее в js-файл. Cоздать объект типа Array и отсортировать его соответствующим образом, используя функцию этого
класса.
Задание 13
Написать скрипт, который удаляет из массива четные
числа. Операцию оформить в виде функции, поместив ее в jsфайл. Cоздать объект типа Array и выполнить над ним соответствующие действия, используя функцию этого класса.
Задание 14
Написать скрипт, который удаляет из массива i чисел,
начиная с j-го. Операцию оформить в виде функции, поместив
ее в js-файл. Cоздать объект типа Array и выполнить над ним
соответствующие действия, используя функцию этого класса.
Задание 15
Написать скрипт, который заменяет i-е число в массиве,
последовательностью из j чисел. Операцию оформить в виде
функции, поместив ее в js-файл. Cоздать объект типа Array и
выполнить над ним соответствующие действия, используя
функцию этого класса.
57

Задание 16
Написать скрипт, который вставляет после i-го числа в
массиве, последовательность из j чисел. Операцию оформить
в виде функции, поместив ее в js-файл. Cоздать объект типа
Array и выполнить над ним соответствующие действия, используя функцию этого класса.
Задание 17
Дан массив чисел. Найти непрерывный подмассив исходного массива, сумма элементов которого максимальна.
Написать функцию getMaxSubSum (массив), которая возвращает эту сумму. Если все элементы отрицательные, то сумма
равна нулю. Например, getMaxSubSum([-1, 2, 3, -9, 11]); //11
2.5. Функции
Функция – это блок кода, который имеет свое имя и его
можно вызывать по этому имени. Имя функции не должно
совпадать с именем какой-либо переменной. Правила задания
имен функциям, такие же, как и правила задания имен переменным.
Синтаксис определения функции следующий:
function имя_функции([список параметров])
{
блок кода;
}
Основная цель функции заключается в том, чтобы избавить программу от дублирования кода. Чтобы функция заработала, ее надо вызвать:
имя_функции([список значений параметров]);
58

Способы создания пользовательских функций
Ниже представлены различные способы создания функций на примере вычисления суммы двух переменных:
классический способ
function a1(x, y) {
return x + y;
}
как объект класса Function
var a1 = new Function('x', 'y', 'return x + y');
анонимные функции
var a1 = function(x, y) { return x + y; };
Вызов функций во всех случаях будет одинаковым, например:
var a = a1(3, 4).
Параметры функции
JavaScript очень лоялен по поводу количества аргументов, передаваемых функции. Если вы передадите слишком
много, лишние аргументы будут проигнорированы. Слишком мало – отсутствующим будет назначено значение
undefined.
Оператор || часто используется для создания необяза-
тельных параметров в функции. Если первое выражение не
может быть преобразовано в true, то возвращается значение
второго выражения:
function f_print(str) {
str = str || "Значение по умолчанию";
window.alert(str);
}
f_print(); // "Значение по умолчанию"
f_print("Значение указано"); // "Значение указано"
Аргументы функции являются элементами массива ar-
guments.
Массив аргументов доступен только внутри тела функции. Получить доступ к аргументу можно, указав его индекс,
59

а свойство length позволяет определить количество аргументов, переданных функции. Например, функцию вычисления
суммы можно переписать следующим образом:
function f_Sum(x, y) {
return arguments[0]+arguments[1];
}
alert(f_Sum(2, 3)); // 5
При использовании массива аргументов можно передать
функции больше аргументов, чем первоначально объявлено.
function f_Sum(x, y) {
var z = 0;
for (var i=0, c=arguments.length; i<c; i++) {
z += arguments[i];}
return z;
}
alert(f_Sum(2,3,5,1));
Простые переменные передаются в функцию по значе-
нию.
function val(a) {
a=22;
}
var a=1;
alert(a); //1
val (a);
alert(a); //1
Массивы в функцию передаются по ссылке. Поэтому
результат выполнения следующего программного кода будет
таковым:
function f_Sum(a) {
a[1]=100;
}
var a=[1,2,3,4];
alert(a); // 1,2,3,4
f_Sum(a);
alert(a); // 1,100,3,4
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
