FOR OF vs. FOR IN vs. FOR EACH
Здравствуйте! Давайте поговорим о методах For of, For in и ForEach для перебора объектов в цикле. Выбираемый нами метод определяется типом объекта, который мы хотим пройти в цикле, и результатом, который мы надеемся получить в результате этого процесса. Давайте рассмотрим каждый из них, чтобы увидеть основные различия.
№1. Для… зацикливания
Операторы For…of перебирают итерируемые объекты, такие как строки и массивы. Синтаксис выглядит следующим образом:
for (variable of iterable) { statement }
Давайте посмотрим демонстрационный пример перебора массива:
Кроме того, мы можем перебирать строки:
Теперь давайте представим, что у нас есть строка «str», которую мы хотим выяснить, все ли буквы алфавита встречаются в строке. Это означает, что мы сначала должны создать массив со всеми буквами алфавита:
Затем мы использовали бы оператор for…of, чтобы пройтись по массиву алфавита, чтобы получить каждый элемент (букву алфавита), и внутри него мы использовали бы метод include, чтобы сравнить, найдена ли каждая буква алфавита в 'str ' нить:
Вывод будет:
#2. Для... в цикле
Оператор For…in очень похож на For…of, главное отличие состоит в том, что он перебирает свойства (ключи) объектов или индексы массивов вместо их значений. Синтаксис аналогичен оператору цикла For..of:
Вот демонстрация его использования:
Примечание:
For…in не рекомендуется перебирать массив, особенно там, где важен порядок индексов. Вместо этого рекомендуется использовать метод «For…of» или «ForEach».
«For…in» в основном используется для целей отладки, особенно для проверки свойств объекта путем вывода на консоль, или для случаев, когда вы хотите проверить, содержит ли какой-либо из ключей объекта определенное значение, используя что-то вроде методов getOwnPropertyNames(), hasOwnProperty() или propertyIsEnumerable(). Тем не менее, ради нашей задачи мы все равно будем использовать его для решения проблемы.
Для нашей задачи давайте переберем алфавиты с помощью оператора For…in, а затем выведем результат:
Наш вывод будет:
Мы видим, что он выводит положение индекса алфавитов в массиве вместо самих алфавитов (значений). Итак, чтобы решить эту проблему, мы будем использовать синтаксис записи скобок массива для объявления значений из их индекса:
Итак, наш вывод теперь будет:
Теперь мы можем использовать метод .includes, чтобы проверить, найден ли каждый алфавит в заданной строке «str»:
Вывод теперь будет выглядеть так:
#3. Цикл ForEach
Метод Array.prototype.forEach() используется в основном для перебора массивов. Он вызывает указанную функцию обратного вызова один раз для каждого элемента массива.
Синтаксис:
Вот демонстрация оператора forEach:
Итак, давайте воспользуемся методом ForEach для перебора алфавитов для нашей задачи, затем мы сравним каждый из алфавитов с нашей строкой «str» с помощью метода .includes, чтобы увидеть, все ли алфавиты содержатся в строке:
Наш вывод будет:
Вывод:
В общем, я предпочитаю использовать циклические операторы For…of, чем два других, потому что это дает мне больше возможностей для циклического перебора многих типов итерируемых элементов; в отличие от ForEach, который в основном подходит для перебора массивов, и For..in, который в основном используется для отладки. Метод цикла For…of также очень лаконичен и кажется более современным в использовании. Итак, для меня, For…of выигрывает день! Но вы можете использовать все, что хотите, тбх. :)
#Конец
Надеюсь, вам понравилось! :) Следуйте за мной для получения дополнительной информации…
Youtube: youtube.com/c/IfeanyiOmeata
LinkedIn: linkedin.com/in/omeatai
Twitter: twitter.com/iomeata
Github: github.com/ omeatai
Stackoverflow: stackoverflow.com/users/2689166/omeatai
Hashnode: hashnode.com/@omeatai
Среда: medium.com/@omeatai
> © 2021
Первоначально опубликовано на https://ifeanyiomeata.hashnode.dev.