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

Урок 16. Практика на пользовательские функции в JavaScript

Содержание

Теория

Функция inArray

Задача

Реализовать функцию inArray, которая будет проверять, есть ли в массиве элемент с таким значением или нет. 1-м параметром функция должна принимать значение, а 2-м - массив. Если такой элемент есть - функция должна вернуть true, а если нет - false.

Решение:

function inArray(value,a){for(i=0;i<a.length;i++){if(a[i]==value){return true}}return false};a=[1,2,3];document.write(inArray(3,a))//Выведет true

function inArray(value,a){for(i=0;i<a.length;i++){if(a[i]==value){return true}}return false};a=[1,2,3];document.write(inArray(8,a))

Простые числа

Задача

Реализовать функцию isSimple, которая параметром будет принимать число и проверять, простое оно или нет. Если число простое, функция должна вернуть true, в противном случае - false.

Решение:

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

function isSimple(n){for(i=2;i<n;i++){if(n%i==0){return false}}return true}document.write(isSimple(17))//Выведет true

function isSimple(n){for(i=2;i<n;i++){if(n%i==0){return false}}return true}document.write(isSimple(8))

Делители

Задача

Реализовать функцию getDivisors, которая параметром будет принимать число и возвращать массив его делителей, т.е. чисел, на которое делится число. К примеру, если передается число 24, должен получиться массив [1,2,3,4,6,12,24].

Решение:

function getDivisors(n){var r=[];for(i=1;i<=n;i++){if(n%i==0){r.push(n)}}return r}document.write(getDivisors(24))//Выведет [1,2,3,4,6,12,24]

Проверь!

Пересечение массивов

Задача

Реализовать функцию getIntersection, которая параметрами будет принимать 2 массива и возвращать массив из элементов, которые есть и в 1, и во 2-м массиве (это называется пересечение массивов). К примеру, getIntersection([1,2,3],[2,3,4]) должно вернуть [2,3].

Решение:

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

function getIntersection(a1,a2){r=[];for(i=0;i<a1.length;i++){if(inArray(a1[i],a2)){r.push(a1[i])}}return r}document.write(getIntersection([1,2,3],[2,3,4]))//Выведет [2,3]

Проверь!

НОД

Задача

Реализовать функцию getGreatestCommonDivisor, которая параметрами будет принимать 2 числа и возвращать наибольший общий делитель (НОД) этих 2 чисел. К примеру, для чисел 12 и 18 НОД равен 6.

Решение:

Используются разработанные функции. С помощью getDivisors находится массив делителей 1 и 2-го числа, а с помощью getIntersection получается массив общих делителей. Остается просто взять максимальный из общих делителей и получить результат:

function getGreatestCommonDivisor(n1,n2){divisors=getIntersection(getDivisors(n1),getDivisors(n2));/*['2','3','6']*/return Number(Max.apply(null,divisors))}document.write(getGreatestCommonDivisors(12,18))//Выведет 6

Практика

Дана строка. Сделать заглавным 1-й символ каждого слова этой строки. Для этого сделать вспомогательную функцию ucfirst, которая будет получать строку, делать 1-й символ этой строки заглавным и возвращать обратно строку с заглавной 1-й буквой.

Дана строка вида 'var_text_hello'. Сделать из него текст 'varTextHello'.

Сделать функцию inArray, которая определяет, есть в массиве элемент с заданным текстом или нет. Функция 1-м параметром должна принимать текст элемента, а 2-м - массив, в котором делается поиск. Функция должна возвращать true или false.

Дана строка, например, '123456'. Сделать из нее '214365'.

Содержание

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

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