JavaScript - pętle
Pętle
pętla for
for (wyrażenie początkowe; wyrażenie warunkowe; wyrażenie modyfikujące){blok instrukcji
}
wyrażenie początkowe - inicjuje zmienną używaną jako licznik liczby wykonań pętli
wyrażenie warunkowe - określa warunek jaki musi być spełniony, aby dokonać kolejnego przejścia w pętli
wyrażenie modyfikujące - zazwyczaj jest używane do modyfikacji zmiennej będącej licznikiem
<script type="text/javascript">
for (var x = 0; x < 5; x++){
document.write("Pętla typu for <br />");
}
</script>
wynik skryptu
Opis w jaki sposób należy rozumieć powyższy skrypt:
(var x = 0) - utwórz zmienną x i przypisz jej wartość 0
(x < 5) - tak długo jak wartość x jest mniejsza od 5 wykonuj instrukcję znajdującą się wewnątrz pętli: document.write
(x++) - zwiększaj x o 1
na ekranie pojawi się 5 razy napis "Pętla typu for"
<script type="text/javascript">
for (var x = 0; x < 5; x++){
document.write("Pętla typu for " + x + "<br />");
}
</script>
wynik skryptu
pętla for z różnymi rodzajami zmiennych: vor, let, const
<script type="text/javascript">
var a = 10;
for(var a = 0; a <= 3; a++){
document.write("pętla for " + a + "<br />");
}
document.write('this is a: ' + a);
</script>
wynik skryptu
<script type="text/javascript">
let b = 10;
for(let b = 0; b <= 3; b++){
document.write("pętla for " + b + "<br />");
}
document.write('this is b: ' + b);
</script>
wynik skryptu
<script type="text/javascript">
const c = 10;
for(const c = 0; c <= 3; c++){
document.write("pętla for " + c + "<br />");
}
document.write('this is c: ' + c);
</script>
wynik skryptu
wyrażenie modyfikujące wewnątrz pętli for
for (wyrażenie początkowe; wyrażenie warunkowe;){
instrukcje do wykonania
wyrażenie modyfikujące
}
<script type="text/javascript">
for (var x = 0; x < 5;){
document.write("Pętla typu for <br />");
x++;
}
</script>
wynik skryptu
wyrażenie początkowe przed pętlą
wyrażenie początkowe;
for (; warunek;){
blok instrukcji
modyfikacja
}
<script type="text/javascript">
var x = 0;
for (; x < 5;){
document.write ("Pętla typu for <br />");
x++;
}
</script>
wynik skryptu
pętla bez wyrażeń
<script type="text/javascript">
var x = 0;
for (; ;){
document.write ("Petla typu for " + x + "<br />");
if (x++ >= 5) break;
}
</script>
wynik skryptu
pętla for rosnących liczb
<script type="text/javascript">
for (var x = 1; x <= 20; x++){
document.write(x + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 1; x <= 20; x+=2){
document.write(x + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 1; x <= 20; x+=3){
document.write(x + " ");
}
</script>
wynik skryptu
pętla for malejących liczb
<script type="text/javascript">
for (var x = 20; x >= 0; x--){
document.write(x + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 20; x >= 0; x-=2){
document.write(x + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 20; x >= 0; x-=3){
document.write(x + " ");
}
</script>
wynik skryptu
pętla for rosnących liczb raz jeszcze
<script type="text/javascript">
const a1 = 6;
const b1 = 12;
for (let i=1; i<=a1 && i<=b1; i++) {
document.write(i + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
const c1 = 6;
const d1 = 12;
for (let i=8; i>=c1 && i<=d1; i++) {
document.write(i + " ");
}
</script>
wynik skryptu
pętla for obliczająca modulo
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 1 = " + (x % 1) + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 2 = " + (x % 2) + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 3 = " + (x % 3) + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 4 = " + (x % 4) + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 5 = " + (x % 5) + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 0; x <= 6; x++){
document.write(x + " % 6 = " + (x % 6) + "<br />");
}
</script>
wynik skryptu
liczby podzielne przez 2
<script type="text/javascript">
for (var x = 1; x <= 20; x++){
if ((x % 2) == 0)
document.write(x + " ");
}
</script>
wynik skryptu
liczby niepodzielne przez 2
<script type="text/javascript">
for (var x = 1; x <= 20; x++){
if ((x % 2) != 0)
document.write(x + " ");
}
</script>
wynik skryptu
<script type="text/javascript">
for (var x = 1; x <= 6; x++){
if((x % 2) == 1){
document.write("<b style=\"color: blue;\">" + x + "</b> ");
} else {
document.write("<b style=\"color: red;\">" + x + "</b> ");
}
}
</script>
wynik skryptu
<div>Wynik: <span id="list"></span></div>
<script type="text/javascript">
const container = document.querySelector('#list');
for (let i = 1; i <= 5; i++){
container.innerHTML = container.innerHTML + i;
}
</script>
wynik skryptu
Wynik:
<div>Wynik: <span id="list02"></span></div>
<script type="text/javascript">
const container02 = document.querySelector('#list02');
for (let i = 1; i <= 5; i++){
container02.innerHTML = container02.innerHTML + i + ' ';
}
</script>
wynik skryptu
Wynik:
<div>Wynik: <span id="list03"></span></div>
<script type="text/javascript">
const container03 = document.querySelector('#list03');
for (let i = 1; i <= 5; i++){
container03.innerHTML = container03.innerHTML + '<br />' + i;
}
</script>
wynik skryptu
Wynik:
generowanie listy za pomocą pętli for
<div id="list01A"></div>
<script type="text/javascript">
const el = document.querySelector('#list01A');
let text = '<ul>';
for (let i = 1; i <= 3; i++) {
text = text + `<li>Element nr ${i}</li>`;
}
text = text + '</ul>';
el.innerHTML = text;
</script>
wynik skryptu
<div id="list02A"></div>
<script type="text/javascript">
function generateList(count, selectorId) {
const el02 = document.querySelector('#' + selectorId);
let text02 = '<ul>';
for (let i = 1; i <= count; i++) {
text02 = text02 + `<li>Element nr ${i}</li>`;
}
text02 = text02 + '</ul>';
el02.innerHTML = text02;
}
generateList(3, "list02A");
</script>
wynik skryptu
pętla for...in
stosowana jest w: obiektach, tablicach, stringachleci po kluczach
leci tylko po elementach enumerowalnych
sprawdza też pola prototypu
for (var nazwa in obiekt){
instrukcje
}
<script type="text/javascript">
const Polska = {
kraj: 'Polska',
stolica: 'Warszawa',
powierzchnia: '322 575 km²',
ludność: '38 mln'
}
for(const key in Polska) {
document.write(key + ": " + Polska[key] + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
const kraje = ['Polska', 'Czechy', 'Słowacja'];
for(const key in kraje){
document.write(key + ": " + kraje[key] + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
const cytat = 'Koko dżambo i do przodu.';
for(const key in cytat){
document.write(key + ": " + cytat[key] + "<br />");
}
</script>
wynik skryptu
<p id="wynik"> </p>
<script type="text/javascript">
const Niemcy = {
kraj: 'Niemcy',
stolica: 'Berlin',
powierzchnia: '357 588km<sup>2</sup>',
ludność: '83mln'
}
let txt = "";
for (let key in Niemcy) {
txt += key + ": " + Niemcy[key] + "<br />";
}
document.getElementById("wynik").innerHTML = txt;
</script>
wynik skryptu
<p id="wynik02"> </p>
<script type="text/javascript">
const filmy = ['Matrix', 'Predator', 'Terminator'];
let txt02 = "";
for (let key in filmy) {
txt02 += key + ": " + filmy[key] + "<br />";
}
document.getElementById("wynik02").innerHTML = txt02;
</script>
wynik skryptu
<p id="wynik03"> </p>
<script type="text/javascript">
const powiedzenie = "Koko koko euro spoko.";
let txt03 = "";
for (let key in powiedzenie) {
txt03 += key + ": " + powiedzenie[key] + "<br />";
}
document.getElementById("wynik03").innerHTML = txt03;
</script>
wynik skryptu
pętla for...of
stosowana jest w: tablicach, stringachleci po wartościach
tylko po elementach iterowalnych
tablice są iterowalne
stringi są iterowalne
NodeList jest iterowalne
obiekty domyślnie nie są iterowalne (dlatego na obiektach nie używamy pętli for...of)
<script type="text/javascript">
const miasta = ['Warszawa', 'Praga', 'Bratysława'];
for(const value of miasta){
document.write(value + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
const miasta02 = ['Warszawa', 'Praga', '', 'Bratysława'];
for (const value of miasta02){
if (value.length == 0) break;
document.write(value + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
const miasta03 = ['Warszawa', 'Praga', 'Bratysława'];
for (const value of miasta03){
if (value == 'Bratysława') break;
document.write(value + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
const cytat02 = 'Koko koko euro spoko.';
for(const value of cytat02) {
document.write(value + "<br />");
}
</script>
wynik skryptu
pętla while
while (wyrażenie warunkowe){instrukcje
}
instrukcje warunkowe są wykonywane dopóty, dopóki wyrażenie warunkowe jest prawdziwe
<script type="text/javascript">
x = 0;
while(x++ < 5){
document.write("Pętla typu while " + x + "<br />");
}
</script>
wynik skryptu
<script type="text/javascript">
x = 0;
while(++x < 5){
document.write("Pętla typu while " + x + "<br />");
}
</script>
wynik skryptu
pętla while i liczby od 1 do 20
<script type="text/javascript">
x = 1;
while (x <= 20){
document.write(x + " ");
x++;
}
</script>
wynik skryptu
pętla while i liczby od 20 do 1
<script type="text/javascript">
x = 20;
while (x >= 1){
document.write(x + " ");
x--;
}
</script>
wynik skryptu
pętla while i liczby parzyste
skrypt wyświetlający liczby od 1 do 20 podzielne przez 2
<script type="text/javascript">
x = 1;
while (x <= 20){
if(x % 2 == 0)
document.write(x + ", ");
x++;
}
</script>
wynik skryptu
pętla while i liczby nieparzyste
skrypt wyświetlający liczby od 1 do 20 niepodzielne przez 2
<script type="text/javascript">
x = 1;
while (x <= 20){
if(x % 2 != 0)
document.write(x + ", ");
x++;
}
</script>
wynik skryptu
pętla do...while
do{instrukcje;
}
while(warunek);
wykonuj instrukcje, dopóki warunek jest prawdziwy
jeśli nawet warunek jest fałszywy to i tak pętla zostanie wykonana przynajmniej jeden raz
<script type="text/javascript">
var x = 0;
do{
document.write("Pętla do...while <br />");
}
while (x++ < 5);
</script>
wynik skryptu
<script type="text/javascript">
var x = 0;
do{
document.write("Pętla do...while <br />" + x);
}
while (x++ < 5);
</script>
wynik skryptu
<script type="text/javascript">
var x = 0;
do{
document.write(x + " Pętla do...while <br />");
}
while (x++ < 5);
</script>
wynik skryptu
pętla do...while z fałszywym warunkiem
<script type="text/javascript">
do{
document.write("Pętla do...while z fałszywym warunkiem <br />");
}
while (false);
</script>
wynik skryptu