FOR цикъл

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео
Назад Алтернативен видео плеър
¿ Напред

Тест за преминаване към следващия урок

 
За какво служи for цикълът?  
За последователно изпълнение на блок от код, докато определени условия са изпълнени
За забавяне изпълнението на блок от код с определено време
Всичко изброено   

Въпроси и отговори

  • Как се изписват стойности на един ред и как на нов ред?

    инж.Hristo:

    В примера с for цикъл от модул 4, урок 4,

    for (var number=0; number<=10; number++) { console.log(number); } отпечатаните (върнатите) от цикъла резултати са на нов ред всяко следващо число, а как може да се отпечатат на един ред, с пауза между тях?

    Борис Митев:

    Всяко извинване на console.log изписва резултат на нов ред. Вариантите са два тук - да сложиш няколко стойности в скобите, разделени със запетая:

    Пример: console.log(1, 2, 3, 4);

    или да за запишеш всички стойности в един string и да ги покажеш

    Пример: var string = 1 + ' ' + 2 + ' ' + 3 + ' ' + 4; console.log(string);

    инж.Hristo:

    Да, разбира се, но конкретно в този случай - за отпечатаните на върнатите от цикъла резултати, се чудех как може да се отпечата резултата на конзолата на един ред - като последователни числа, с 1 пауза м/у цифрите : 1 2 3 4 5 6 7 8 9 10
    т.е. чудя са дали има JavaScript аналог на Console.Write(number) от C#.

    Peter:

    Може би - for (var number=0; number<=10; number++) { document.write(number + " "); }

    Руми Станкова:

    var result = ""; for (var number=0; number<=10; number++) { result += number + " "; } console.log(result); //0 1 2 3 4 5 6 7 8 9 10

    инж. Юлиан Ангелов:

    Опитах да направя същото, но с леко разширено задание - да отпечата на редове по 10 числата от цикъла. Получи се с лекота, но не се занимах докрай, защото търся елегантно решение за следното, описано по- долу:

    Ето го кода:

    Ето и резултатът:

    Изненада имаше само от това, че печаташе на първи ред сама нулата а цикълът не продължаваше дадобавя към нея. Затова вмъкнах и IF-а. Според мен причината е в конфликт между типа на променливата number и резултатът от логическата проверка. Затова и в предишните уроци задавах подробни въпроси непряко свързани със същността на урока. Това, което исках да доработя е да се подравняват числата по дясната страна на изпечатаното поле. За целта на едноцифрените числа трябва да добавя по още 2 интервала, на двуцифрените - по още един, а на трицифрените да не добавам повече интервали освен при слепването на стринга. Мога да го направя с if / else if, но ще стане тромаво А не намерих формат на case при който да задавам логически изрази от типа number > 0 && number < 11, респ. number > 10 && number < 1000
    Въпросът ми (макар че е във връзка с предният урок) е има ли такъв формат на case?

    инж. Юлиан Ангелов:

    Оказа се че не може да се публикува тук код, ето го на снимка:

    Татяна Илиева:

    Всъщност единственият тип възможно сравнение при изпълнението на оператор switch/case е "===", т.е. трябва да има пълно съответствие на стойността и типа за да се получи съответствие. Може да използвате кода по-долу за да видите, че в switch/case true не се конвертира до 1 и за да получите съвпадение трябва да имате case true var x = true; switch (x) { case 1: console.log("entered in case 1"); break; case 0: console.log("Entered in case 0"); break; case true: console.log("True is true!"); break; default: console.log("No match found!"); break; } Съответно логически изрази от типа number > 0 && number < 11, респ. number > 10 && number < 1000 не могат да се използват в case.

    Явор Бояджиев:

    На въпроса по-горе: Kак може да се отпечата резултата на конзолата на един ред - като последователни числа, с интервал м/у цифрите : 1 2 3 4 5 6 7 8 9 10. Ето как:

    var result = "" for (var number = 1; number <=10; number++) { result += number + " "; } console.log(result);