Выразительный JavaScript | страница 33
Упражнения
Минимум
В предыдущей главе была упомянута функция >Math.min
, возвращающая самый маленький из аргументов. Теперь мы можем написать такую функцию сами. Напишите функцию min, принимающую два аргумента, и возвращающую минимальный из них.
>console.log(min(0, 10));
>// → 0
>console.log(min(0, -10));
>// → -10
Рекурсия
Мы видели, что оператор >%
(остаток от деления) может использоваться для определения того, чётное ли число (>% 2
). А вот ещё один способ определения:
• Ноль чётный.
• Единица нечётная.
• У любого числа N чётность такая же, как у N - 2.
Напишите рекурсивную функцию >isEven
согласно этим правилам. Она должна принимать число и возвращать булевское значение.
Потестируйте её на 50 и 75. Попробуйте задать ей -1. Почему она ведёт себя таким образом? Можно ли её как-то исправить?
>console.log(isEven(50));
>// → true
>console.log(isEven(75));
>// → false
>console.log(isEven(-1));
>// → ??
Считаем бобы
Символ номер N строки можно получить, добавив к ней >.charAt(N)
(>"строчка".charAt(5)
) – схожим образом с получением длины строки при помощи >.length
. Возвращаемое значение будет строковым, состоящим из одного символа (к примеру, >"к"
). У первого символа строки позиция 0, что означает, что у последнего символа позиция будет >string.length - 1
. Другими словами, у строки из двух символов длина 2, а позиции её символов будут 0 и 1.
Напишите функцию >countBs
, которая принимает строку в качестве аргумента, и возвращает количество символов “B”, содержащихся в строке.
Затем напишите функцию >countChar
, которая работает примерно как >countBs
, только принимает второй параметр — символ, который мы будем искать в строке (вместо того, чтобы просто считать количество символов “B”). Для этого переделайте функцию >countBs
.
4. Структуры данных: объекты и массивы
Два раза меня спрашивали: «Скажите, м-р Бэббидж, а если вы введёте в машину неправильные данные, получится ли правильный ответ?». Непостижима та путаница в головах, которая приводит к таким вопросам.
Чарльз Бэббидж, «Отрывки из жизни философа» (1864)
Числа, булевские значения и строки – кирпичики, из которых строятся структуры данных. Но нельзя сделать дом из одного кирпича. Объекты позволяют нам группировать значения (в том числе и другие объекты) вместе – и строить более сложные структуры.
Написание программ, которым мы до сего момента занимались, сильно затруднял тот факт, что они работали только с простыми данными. Эта глава добавит вам в инструментарий понимание структур данных. К её концу вы будете знать достаточно для того, чтобы начать писать полезные программы.