Йоги
Много раз в вашем коде вам требуется петлю через Массив номеров, строк или объекта . Есть только так много способов сделать это, и в этом руководстве направлено на то, чтобы научить вас всех из них, чтобы вы стали мастером «петли в JavaScript».
Смотрите эту ниндзя кошку, который является мастером прыжка.
через гипю
Как и кошка, вы также будете стать мастером петли JavaScript после того, как вы узнаете все циклические трюки.
1. То “Для” цикла
Для петли является наиболее основным способом петли в вашем коде JavaScript. Очень удобно выполнить блок кода несколько раз. Используется счетчик , чья значение сначала инициализируется, а затем указано его окончательное значение.
счетчик увеличивается по определенному значению Каждый раз, когда цикл работает. CONOP CREATS, если счетчик находится внутри пределов (начальное значение для конечного значения), и контур заканчивается, когда значение счетчика переходит на конечное значение.
Позвольте мне показать вам несколько примеров.
. Зацикливаться через массив
В следующем коде я зацикливаюсь через все Числа в массиве и печать каждого из них на окне консоли.
var numbers = [10, 20, 30, 40, 50];
for (var i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}Точно так же вы можете зацикливаться через массивы строки.
б. Зацикливаться через элементы DOM
Предположим, вы хотите Найти и окрасить все якоря на странице красных. Тогда здесь вы можете использовать Для петли нравится:
var elements = document.querySelectorAll("a");
for (var i= 0; i < elements.length; i++) {
elements[i].style.color = "red";
}Объяснение : Я впервые получил все якоря в массиве, используя Document.QuerySelectorallAll («A») Отказ Тогда я просто запередил их и изменил их цвет в красный цвет.
Я пошел на сайт W3Schools и запустил вышеуказанный код на консоли браузера и посмотрим, что он сделал:
2. Цикл “для” в “
За цикл используется для петли через Свойства объекта/массива без использования «счетчика». Так что это упрощенная версия Для петли Отказ
Блок кода внутри цикла будет выполнен один раз для каждого свойства.
. Зацикливаться через свойства объекта
У меня есть объект, который содержит некоторые свойства. Я буду использовать Для в петле Искать все свойства и это значение.
Ниже код печатает все свойства и их значения В окне консоли.
var person = { fname: "Nick", lname: "Jonas", age: 26 };
for (var x in person) {
console.log(x + ": " + person[x])
}б. Зацикливаться через JSON
JSON является очень популярным форматом для передачи объектов данных, состоящих из Атрибут-значение Пары и типы данных массива. Сайты используют JSON, чтобы поделиться своей информацией с внешними веб-сайтами. Теперь я скажу вам, как извлечь данные из JSON.
Предположим, у меня есть некоторые JSON, содержащие некоторую информацию, как показано ниже:
jsonData: {
one: [11, 12, 13, 14, 15],
two: [21, 22, 23],
three: [31, 32]
}JSON имеет корневой узел под названием « jsondata «И это содержит 3 узла – ‘ один ‘,’ Два ‘,’ Три ‘. Узлы также называют ключами.
Код ниже показывает, как извлечь информацию от JSON, используя За петля:
var json = {
jsonData: {
one: [11, 12, 13, 14, 15],
two: [21, 22, 23],
three: [31, 32]
}
};
for (var key in json.jsonData) {
for (var key1 in json.jsonData[key]) {
console.log(json.jsonData[key][key1])
}
}Объяснение : Есть 2. Для петлей В приведенном выше коде – внешний цикл и внутренний цикл.
Внешняя петля Работает 3 раза и покрывает узлы «один», «два» и «три». Внутренняя петля охватывает все значения внутри выбранного узла Я узлы «один», «два» и «три».
Запустите код на вашей веб-странице или в окне консоли вашего браузера, и вы увидите все значения узлов, напечатанных, как в следующем изображении:
Немного глубже в JSON
Тот же JSON может быть выражена, поставив [] Чтобы содержать 3 узла «один», «два», «три»:
jsonData: [{
one: [11, 12, 13, 14, 15]
}, {
two: [21, 22, 23]
}, {
three: [31, 32]
}]Теперь я буду использовать комбинацию Для & для петли, чтобы извлечь всю информацию из этого JSON. Ниже приведен код для меня:
var json = {
jsonData: [{
one: [11, 12, 13, 14, 15]
}, {
two: [21, 22, 23]
}, {
three: [31, 32]
}]
};
for (var i = 0; i < json.jsonData.length; i++) {
for (var key in json.jsonData[i]) {
for (var j = 0; j < json.jsonData[i][key].length; j++) {
console.log(json.jsonData[i][key][j])
}
}
}3. Петля “пока”
Хотя петля имеет условие, указанное в нем. Он проверяет состояние и выполняет блок кода до тех пор, пока Состояние верно Отказ Обратите внимание, что цикл while while не имеет счетчик Как и для петли.
. Зацикливаться через элемент таблицы HTML
Предположим, у меня есть HTML-таблица Это показывает цены на разные продукты. Этот HTML-таблица выглядит как изображение ниже:
Вы можете увидеть, что эта таблица не показывает Общая цена Из всех продуктов. Так что, если вам требуется, чтобы вы показать общую цену, то вы можете Петля через все цены и показать сумму в нижнем колонтитуле таблицы. Вот как вы это сделаете.
Добавьте код таблицы HTML на вашу веб-страницу:
| Id | Product Name | Product Price |
|---|---|---|
| 1 | Shirts | 49.99 |
| 2 | Pants | 55.50 |
| 3 | Socks | 20 |
| 4 | Shoes | 99 |
| 5 | Jackets | 88.90 |
Далее добавьте CSS для предоставления правильного дизайна к этой таблице HTML:
Теперь петлю через стол с Хотя петля и рассчитать сумму всех продуктов. Поэтому добавьте следующий код JavaScript на вашу веб-страницу, которая выполняет эту работу:
var table = document.getElementById("priceTable");
var i = 1;
var sum = 0;
while (i < table.rows.length) {
sum += parseFloat(table.rows[i].cells[2].innerHTML)
i++;
}
var row = table.insertRow(i);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell2.innerHTML = "Total Price";
cell3.innerHTML = sum;Объяснение : Сначала я получаю ссылку на стол, используя var.getelementbyId (“Precetable”) . Затем я добавил 2 переменных под названием «I» и «Sum». Переменная «I» – условная переменная цикла в то время как «сумма» будет продолжать добавлять цену каждого продукта в него.
Так что я побежал Хотя петля Для вариабельной стоимости «I» от 1 до (Total Rows -1). Я получил полные ряды в таблице от table.rows.length и добавил его в состояние цикла во время:
while (i < table.rows.length) {
//…
}Примечание : Таблица имеет 6 строк из индекса от 0 до 5, и каждая строка имеет 3 столбца от индекса от 0 до 2. Я специально провел петлю от «I» переменного значения 1, а не 0. Это связано с тем, что в 0-м индексе строки таблицы есть имя колонки (которое мне не нужно).
Внутри While Loop я продолжал добавлять значения цен каждого продукта на переменную суммой: сумма (таблица. [i] .cells [2] .innerhtml) И в конце увеличена ценность «I» на 1.
Например, когда значение «I» 1, то Таблица. [1] Дает мне первый ряд (первый элемент TR). Точно так же table.rows [1] .cells [2] даст ценность ценовой колонки (цена ‘TD’ элемент) первого ряда.
После завершения петли я добавляю Новая строка в таблицу в самом конце. В этой строке я добавляю 3 столбца – 0-й индекс, 1-й индекс и 2-й индекс. Наконец я показываю строку «Total» в 1-м столбце и общую цену, содержащуюся в переменную «сумму» в 2-й столбец Отказ
Код, который делает добавление этой новой строки:
var row = table.insertRow(i); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); cell2.innerHTML = "Total Price"; cell3.innerHTML = sum;
table.insertron (I) добавит 6 ряд Потому что ценность переменной «I» – 6 в то время Хотя петля заканчивается.
Колонны («TD» элемент) добавляются к этой новой строке по Row.insertcell (0), ROW.InsertCell (1), ROW.InsertCell (2) Отказ
Я показываю значение внутри колонки:
cell2.innerHTML = "Total Price"; cell3.innerHTML = sum;
Вышеуказанный код JavaScript создаст новую строку, содержащую общую цену продукта. Теперь стол будет выглядеть так:
б. Бесконечная петля
Ниже приведен бесконечный цикл в то время как оператор:
var infiVal = true;
while (infiVal) {
// your code
}Примечание: бесконечные петли могут зависать браузер, поэтому требуется запустить цикл при зазоре нескольких миллисекунд. Вы можете использовать SetInterval javaScript Метод Чтобы запустить данную функцию каждые 1000 миллисекунд. Смотрите следующий код:
var myVar = setInterval(myTimer, 1000);
function myTimer() {
// your code
}4. Цикл «Делай в то время как»
В Делать пока цикла состояние, чтобы быть Проверено дано в конце, И поэтому цикл выполняется хотя бы один раз, даже если условие не соответствует действительности. Проверьте следующий код, который даст сообщение «Hello» на поле оповещения, даже если условие является ложным справа от начала (как значение переменной «I» всегда больше 1).
var i = 2;
do {
alert("Hello");
i++;
}
while (i < 1);. Зацикливаться через XML
Теперь я буду использовать Делать пока цикла Для того, как петля через XML и извлечь данные из него. У меня есть файл XML под названием «XMLFile1.xml», содержание которого является:
Washington DC Islamabad Beijing Tokyo
Я буду использовать Ajax, чтобы прочитать этот файл XML А потом петлю через это с помощью петли. Ниже приведен код отпечатывает все имена городов (приведенных в файле XML) в окне консоли.
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "XMLFile1.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var cityNames = Array.from(xmlDoc.getElementsByTagName("city"));
var i = 0;
do {
console.log(cityNames[i].innerHTML);
i++;
}
while (i < cityNames.length);
}Объяснение : Я создал XMLHTTPREQUEST Объект для создания вызова AJAX. Когда файл XML будет прочитать, то событие называется onreadystatechange поднят, см. Ниже код:
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};В этом случае я называю свою пользовательскую функцию под названием Myфункция () Отказ Здесь я храним содержимое XML внутри переменной под названием xmldoc :
var.responsexml;
Затем я преобразовал все города города в Массив :
var.from (xmldoc.getelementsBytagname («Город»));
Наконец я петлю через этот массив городов, использующих Делать пока цикла И напечатайте каждое название города в окне консоли:
var i = 0;
do {
console.log(cityNames[i].innerHTML);
i++;
}
while (i < cityNames.length);Изображение ниже иллюстрирует вывод, напечатанный на консоли:
5. Метод “.foreach ()”
ES6 Edition JavaScript представил новый метод под названием .для каждого () Для зацикливания через элементы массива. Вы найдете это очень удобным при работе с массивами.
. Зацикливаться через массив с .Foreach () Метод:
В этой ситуации я петлю через элемент массива с .для каждого () Метод и распечатать индекс и ценность каждого Элемент В окне консоли. Смотрите код ниже:
var names = ["jerry", "tom", "pluto", "micky", "mini"];
names.forEach(Function1);
function Function1(currentValue, index) {
console.log("Array Current Index is: " + index + " :: Value is: " + currentValue);
}Функция1 это название функции, которая вызывается для каждого элемента массива. В моем случае это будет называться 5 раз. Он принимает 2 параметра – «индекс» и «значение» текущего элемента.
Примечание что вы можете преобразовать объект в массив, используя Array.from () Метод:
var linksArr = Array.from(links);
Заключение
Спасибо за ваше время, читая это руководство. Я надеюсь, что это научило вам что-то новое о работе с петлями в JavaScript. Теперь вы можете применить любой из вашу любимую тактику петлей, описанную в этом руководстве в вашем веб-проекте.
Я публикую 2 статьи веб-разработки в неделю. Подумайте о том, чтобы следовать за мной и получить уведомление всякий раз, когда я публикую новый учебник на среднем. Если этот пост был полезен, пожалуйста, нажмите кнопку CLAP на несколько раз, чтобы показать вашу поддержку! Это принесет улыбку на моем лице и мотивирует меня писать больше для читателей, как ты.
Спасибо и счастливого кодирования!
Оригинал: “https://www.freecodecamp.org/news/master-the-art-of-looping-in-javascript-with-these-incredible-tricks-a5da1aa1d6c5/”