Для цикла, для в, для и для каждого! Ага, они братья? Родители и дети? Или другой….

Для циклов обычные форматы выглядят следующим образом:

for (пусть i = 0; i ‹ 5; i++) {
text += «Число равно « + i + «‹br›»;

Его символ имеет важный индекс i, который имеет область действия от 0 — some.length, затем i++. Это традиционный способ выражения цикла for. Он работает в массиве, но не в объекте, потому что объект не индексируется, как массив.

For in и For of — это более новые типы циклов по сравнению с циклом for.

В w3schools есть определения For in и For of.

  • for/in — циклически перебирает свойства объекта
  • for/of — циклически перебирает значения итерируемого объекта

Увидели сходство и разницу между for in и for of?

Хорошо, давайте читать построчно. for in is перебирает свойства объекта. Ключевые слова, которые мы получаем, — это «цикл», «свойства» и «объект». Итак, мы знаем, что in служит для объекта, а не для массива. ! И он получает свойства объектов, а не значения.

А для оф? Для получения значений объекта до завершения всех значений объекта. Так что это ценность, а не свойство.

Теперь for in и for of получаются из объекта , а не из массива. For in относится к свойствам, а for of — к значениям.

Смутиться? Еще нет!

forEach() — это метод свойства. В MDN определение forEach:

“forEach() вызывает предоставленную функцию обратного вызова один раз для каждого элемента в массиве в порядке возрастания. Он не вызывается для свойств индекса, которые были удалены или не инициализированы. (Для разреженных массивов см. пример ниже.)”

Мы получаем вывод для forEach(), который заключается в обратном вызове функции, которая обращается ко всем элементам массива.

Давайте используем случай, чтобы продемонстрировать концепцию:

const array = [‘a’, ‘b’, ‘c’];

array.forEach(getElement);// вы также можете использовать стрелочную функцию

функция getElement(e,i) {

console.log(e,i);

}

Итак, мы получаем:

a 0

b 1

c 2

По умолчанию первым параметром forEach является текущее значение, а вторым параметром forEach является индекс.

Работает ли forEach в объекте? Ответ положительный. Вот еще один случай из MDN:

пусть obj = {0: ‘a’, 1: ‘b’, 2: ‘c’ };

Object.getOwnPropertyNames(obj).forEach(

функция(val, idx, массив){

console.log(val + ‘-›’ + obj[val]);

}

);

И проверьте результаты:

0->a
1->b
2->c

Мы можем получить свойства объекта и их значение с помощью Object.getOwnPropertyNames(). Аналогичным является Object.key для цикла for in.

Таким образом, резюме должно сказать:

для циклов -› массив

for in -› свойство объекта

for of -›значение объекта

forEach-›массив или объект (используя Object.getOwnPropertyNames())

Еще не закончено!

Что бы вы хотели закодировать в этом случае? Вот наш последний случай.

Предположим, у меня есть куча ‹p›‹/p› в HTML. Теперь я хочу применить эти команды ‹p› с другим цветовым стилем. Итак, мы создаем две переменные:

const allPs = document.querySelectorAll(‘p’);

const fontSize= ['xx-маленький', 'x-маленький', 'маленький', 'большой', 'х-большой'];

Какие типы циклов for вы хотели бы использовать? Вы можете приостановить чтение здесь и перейти к написанию этого сейчас…

Поскольку const allPs — это набор объектов, или мы можем назвать его NodeList, а colors — это массив. Итак, какие циклы for мы должны использовать?

Объекты имеют ключи и их значение. Массив имеет свой индекс. Этот случай объединяет эти два вместе. В этом случае нужно применить массив к объекту? или объект в массив?

Мы сказали, что allPs — это NodeList, который представляет собой массивоподобный список (коллекцию) объектов. Таким образом, мы можем иметь индекс и в NodeList. Поэтому индекс можно было использовать как для всех лисов, так и для цветов. Мы можем использовать обычные циклы for и forEach для этого кода. И for in и for of допустили бы ошибки. (Вы можете ответить мне, какую ошибку получить.)

Обычный цикл for будет таким:

функция all(элемент, массив){

for(пусть i = 0; i ‹ element.length; i++){

пусть p= элемент[i];

p.style.fontSize = массив[i];

console.log(p);

}

}

Коды forEach должны выглядеть так:

allPs.forEach(все);

функция all(p, i){

let fontSize = fontSize[i];

p.style.fontSize = размер шрифта;

console.log(p);

}

Хорошо, теперь мы заканчиваем изучение циклов for. Вы можете оставить комментарии или лучшие способы внизу.