Сегодня я узнал о логическом ИЛИ в JavaScript.
function splitPairs(text) { return (text + "_").match(/../g) || []; }
Если текст является строкой, этот короткий алгоритм сгруппирует вашу строку в последовательные пары. Если текстовая строка имеет нечетную длину, к одинокому элементу последней пары добавляется подчеркивание.
Например:
splitPairs("HelloWorld")
вернется
["He", "ll", "oW", "or", "ld"]
Добавление s к «HelloWorld» вернет
["He", "ll", "oW", "or", "ld", "s_"]
Как это работает
Фрагмент (текст + «_») просто добавляет подчеркивание в конце текста.
Часть match вернет список текста, разделенного парами.
Последняя часть самая интересная: || [].
|| является логическим символом ИЛИ. Этот фрагмент предназначен для случая пустой входной строки, и в этом случае будет возвращено «[]», а не нулевое значение.
Как работает логическое ИЛИ?
Если вы программист/компьютерщик и читаете это, вы знаете таблицу истинности для логической дизъюнкции:
При использовании логического ИЛИ в JavaScript каждое из двух утверждений можно назвать «ложным» или «истинным».
Утверждение является «ложным», если оно похоже на одно из приведенных выше:
- нулевой
- Нэн
- неопределенный
- 0
- []
- “” or ‘’ or ``
По сути, пустую структуру данных можно назвать «ложной», и логический оператор ИЛИ классифицирует ее как ложную.
Правдивое утверждение — это любая структура данных, имеющая значение, по существу:
- [1]
- 50
- "привет"
и т. д.
Логическое ИЛИ функционирует как значения истинности для логических значений.
Но чего вы можете не заметить, так это того, что логическое ИЛИ всегда будет возвращать один из операндов в операторах логического ИЛИ. Это означает, что когда логический оператор ИЛИ используется с небулевыми операндами, он возвращает нелогическое значение.
Итак, какое значение он вернет?
Если оба операнда «истинны», операция вернет первый операнд в операции.
Если один операнд «истинный», а другой «ложный», будет возвращен элемент «истинный».
Наконец, если оба операнда «ложны», логическая операция ИЛИ вернет второй операнд в операции.
Приложение
В функции splitPairs() в верхней части страницы, если в первом операнде вообще есть совпадение, результатом логического ИЛИ будет список пар.
Однако, если текст равен «», первый операнд оценивается как «ложь», что означает, что будет возвращен второй операнд, [].
Вот почему логическая дизъюнкция в языках программирования часто может использоваться в качестве замены для операторов if. Если первое истинно, оно возвращается; в противном случае возвращается второй.
Ссылки:
Миссия «Разделенные пары. Проблемы с кодированием javascript — Js.CheckiO
Разделите строку на пары по два символа. Если строка содержит нечетное количество символов, то недостающие…js.checkio.org»