for-of - iteracja po liczbach

0

Cześć,

Mam i nie mam problemu. Zwyczajnie chciałbym użyć for-of do iteracji pętli podobie jak ma to miejsce z iteracja po indeksach w tablicy dla for-of...Czy da sie po liczbach jedynie dając liczbe w zmiennej coś na wzór range?

Mógłbym użyć innej pętli, ale czy da się to zrobić w for-of? Oczywiście to nie jest cały kod, bo on się składa z większej ilości fukncji, ale chodzi mi o mechanizm, bo ten nie daje jakby range, ale suchą liczbe, dajmy na to "3" i wychodze z "3", a nie od "1" do "3".
np:

function dodanie() {
    var ile = prompt("Ile osob chcesz dodac?");
     var w = 0;
    for (var przechowa of ile){
    var  osoba = prompt(`Wpisz nazwe ${w++} osoby, ktora chcesz dodac`);
     ilosc.push(osoba);
     document.getElementById("persons-dod").innerHTML += `<br> Dodales: ${osoba}`;    
    }

0

Co Ci nie pasuje w dobrym, klasycznym for (let i = 3; i > 0; --i)?

1
for (let _ of Array(ile)) {
  // code...
}
1
for (let index in [...(new Array(5)).keys()]) {}
0

Cześć,

Dziękuje za opodpowiedzi, ale mam dodatkowe pytanie do podanych sugestii:

Dwie reakcje:

ile = 3;
for (var z of [...(new Array(ile).keys())]){
  console.log(z);
}

Wynik powyższego(oczekiwany):

//całość w pętli
> 0
> 1
> 2

ALE, kiedy zamienie przypisanie odgórne do zmiennej,przypisaniem z klawiatury, to wynik jest zgoła inny:

var ile = prompt("podaj liczbe");  //dajmy na to, że wpisze "3"
for (var z of [...(new Array(ile).keys())]){
  console.log(z);
}
console.log(z);

Wynik powyższego(nieoczekiwany):

> 0  //pętla
> 3  //poza pętlą

Czym jest to spowodowane? Dlaczego tak różni się przypisanie podczas deklaracji, a przypisanie z klawiatury?

1

To co dostajesz z prompta jest typu string, muszisz to zamienić na number by tego użyć:

const ile = Number(prompt("podaj liczbe"))
0

No tak, a ja przyjąłem założenie, że prompt również poda automatycznie typ liczbowy rozpoznając cyfre, tak jak przypisuje się do zmiennej, bez nadmiernego typowania, ale prompt odgórnie przypisuje jako string i trzeba mu powiedzieć jak ma rozpoznawać konkretne przypisanie, jeżeli jest inny oczekiwany niż string.

Użyłem sposobu z modułem obiektu "keys", bo zwraca wartość, a sam obiekt Array będzie iterował, ale bez dalszego wykorzystania tej zmiennej w tudzież pętli for-of.

Jeżeli chodzi powód dla którego nie chce używać klasycznej pętli - powodem jest wykorzystywanie jej w różnych językach(znam ją bardzo dobrze - jeszcze C/C++). Używając pętli stricte js i kombinacji jak w tym przypadku "arr.keys", ucze się od razu dalszych możliwych mechanizmów języka js. To dlatego :)

Dziękuje za wszystkie odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1