На этой неделе я начал свой путь изучения JavaScript. Нужно было изучить много нового синтаксиса и словоблудия, но одной из самых сложных концепций было создание калькулятора узлов, где мне нужно было разрезать строку, чтобы изолировать операнд.

Вот задача: создать программу, которая позволяет пользователю вводить всю операцию в одной строке, например: «6 / 6» или «5 * 3».

В этой статье я пройдусь по этой задаче, чтобы показать, как можно использовать метод slice для строки, чтобы изолировать разные значения.

Метод slice используется в JavaScript для извлечения элемента или части строки и возврата этой новой строки (при сохранении исходной строки нетронутой). Это похоже на метод splice, который извлекает или добавляет фрагменты из массива; и метод split, который разбивает строку на массив.

Метод slice имеет следующий синтаксис:

string.slice(начальная позиция, конечная позиция).

Параметр начальной позиции является обязательным, а конечная позиция — нет. Имея только параметр начальной позиции, метод slice будет начинаться с начальной позиции и продолжаться до конца строки (ниже я покажу это в действии).

Давайте начнем с простого примера того, как работает метод среза. Ниже у меня есть строковая переменная «Beetlejuice».

Если я хочу использовать метод slice для извлечения строки «juice» из строки «Beetlejuice», как мне это сделать?

Во-первых, мне нужно найти положение разделения, глядя на длину строки. Важно помнить, что JavaScript использует нумерацию, начинающуюся с нуля, то есть наш счет начнется с 0.

Как мы видим выше, слово «сок» начинается с 6-й буквы в строке. Это означает, что я буду использовать 6 в качестве начальной позиции, которая вернет слово «сок» — разрезав слово «Жук» (оставив исходную строку неповрежденной).

Теперь, когда мы рассмотрели, как работает метод slice на простом примере, давайте рассмотрим проблему, которая поставила меня в тупик.

Мы можем посмотреть на запись командной строки «6 / 6» как на строку. Мы знаем, что программа должна читать оператор и числа отдельно, чтобы выполнить математический расчет. Единственная известная переменная, которая у меня есть, — это оператор, потому что каждый ввод числа будет другим. Это означает, что я должен разрезать строку «6 / 6» в операторе. Делая это, я изолирую число слева и число справа от строки. После извлечения этих элементов я могу использовать их для выполнения математической операции.

Прежде чем я изолирую числа по обе стороны от оператора, я должен выполнить несколько функций, чтобы найти местоположение оператора. Я создал функцию, которая использует метод includes для поиска в строке наличия оператора.

Затем я использую метод indexOf, чтобы найти местоположение оператора (подключив функцию findOperator).

Теперь пришло время использовать метод slice для разделения различных элементов строки. Мы знаем, что я хочу разрезать ввод первого числа до оператора. Начало первого числа будет иметь позицию 0 (поскольку это начальная позиция строки), конечной позицией будет позиция, которую я нашел, используя indexOf для позиции оператора.

Теперь мне нужно выделить номер справа от оператора. Я могу сделать это и с помощью метода slice, так как он изолирует нужное число в отдельную строку. Поскольку я хочу изолировать право оператора, начальной позицией будет позиция оператора + 1. В этом случае мне не нужна конечная позиция для правильного числа, так как я хочу, чтобы разделение продолжалось до конца нить.

Затем я поместил все вышеперечисленные методы в одну функцию, чтобы их можно было легко вызывать.

Использование метода slice помогло изолировать числа по обе стороны от оператора, чтобы их можно было поместить в функцию калькулятора.

Я надеюсь, что этот пример поможет внести больше ясности в метод slice. Удачного кодирования!