Хорошо, давайте разберемся.
str.split('')
Эта строка разбивает вашу строку 'abcba'
на массив. Результат будет:
['a', 'b', 'c', 'b', 'a']
Теперь, когда у вас есть массив, вы можете использовать l oop и выбрать определенные индексы из массива. Это очень полезно в случае палиндрома.
Поскольку вы хотите знать, совпадает ли слово при отражении. И вы понимаете это, начиная с головы и хвоста массива.
Первый элемент в массиве является индексом 0 [0]
, а последний - хорошо, что зависит от массива. Но если у вас есть массив и и вычтите [array.length - 1]
, что в слове abcba равно [5 - 1]
, и вы в итоге получите последний элемент в массиве с индексом 4 [4]
.
// First iteration.
// First and last items in array.
// [0] and [array.length - 1] or [4].
↓ ↓
['a', 'b', 'c', 'b', 'a']
Таким образом, в l oop you go слева направо в вашем массиве. И сравните первое значение с последним значением. В вашем примере используется метод every
, который в конце возвращает true, если каждое условие в вашем l oop вернуло true, или false, если это не так.
l oop также предоставляет текущее значение индекса. В вашем примере это i
, сокращение от index . Если вы закончили сравнение первого и последнего значения, вы хотите перейти к следующему элементу в массиве, чтобы начать сравнение второго и первого с последним значением. Отсюда и формула.
str.split('').every((char, i) => {
return char === str[str.length - i - 1] ? true : false;
});
На первой итерации значение i
равно 0. Итак, у вас есть формула: length of the array, subtract 0 and subtract 1
. Что дает вам последний элемент.
Во второй итерации i
теперь равно 1. Это означает, что мы находимся во втором элементе массива. Если вы снова примените i
к формуле, вы можете начать обратный отсчет с конца массива: length of the array, subtract 1 and subtract 1
. Что в сумме составляет -2
.
// Second iteration.
// Second and first to last item in array.
// [1] and [array.length - 2] or [3].
↓ ↓
['a', 'b', 'c', 'b', 'a']
И при следующей итерации вы получаете перекрытие, но не в случаях с четным словом. Но здесь они оба проверяют, совпадает ли c
с c
.
// Third iteration.
// Third and and second to last item in array.
// [2] and [array.length - 3] or [2].
↓
↓
['a', 'b', 'c', 'b', 'a']
И так продолжается до тех пор, пока не будет достигнут последний элемент в массиве с продолжающимся отсчетом l oop и формулой обратный отсчет.
Надеюсь, это имеет смысл и поможет вам понять его немного подробнее.