Javascript echivalent cu „for x in y” (Programare, Javascript, Python, Arraylist)

tăiței-ling_uwu a intrebat.

M-am chinuit să găsesc un echivalent Javascript al lui Python „for x in y”. De exemplu, vreau să împing numere care sunt pare într-o matrice goală, dar nu știu cum să scriu codul pentru a face acest lucru. Am procedat în felul următor:

var numbers = [ 1, 2, 3, 4, 5]
var even = []
for(var x = 0; x < numbers.length; x++){
     if(x % 2 == 0){
         even.push(x)
     }
}

același lucru și pentru șiruri de caractere, dacă numerele ar fi în loc de șiruri:

var numbers = [ "one", "two", "three"]
var even = []
for(var x = 0; x < numbers.length; x++){
     if(x == "two"){
         even.push(x)
     }
}

am observat că de fiecare dată când am tastat, apărea doar x ca index al array-ului, dar eu vreau să accesez elementele.

Comentarii

  • numbers[x] pentru a obține elementul care aparține indicelui x –  > Por VLAZ.
  • for ... of este echivalentul idiomatic direct în JS al lui Python for .. in. Cu toate acestea, pentru acest caz simplu de utilizare, aș prefera să folosesc pur și simplu filter pe matrice – fără niciun fel de buclă. –  > Por Robin Zigmond.
  • Ce este în neregulă cu for(let x of [1,2,3]) { console.log(x) } –  > Por Randy Casburn.
  • @RandyCasburn for/in ar trebui să fie utilizat numai pe obiecte, nu pe array-uri, deoarece itera toate proprietățile proprii, nu numai cele indexate. –  > Por Scott Marcus.
  • Acesta a fost un caz de „ready, fire, aim” 🙂 –  > Por Randy Casburn.
3 răspunsuri
Vitalii

for (let x of numbers) JS declarație este ceea ce căutați.

x se va itera peste valori și nu peste indici.

const numbers = [ 1, 2, 3, 4, 5]
const even = []
for(const x of numbers){
     if(x % 2 === 0){
         even.push(x)
     }
}

P.S.

even = numbers.filter(el => el % 2 === 0) poate fi, de asemenea, utilizat și este mult mai simplu.

Puteți găsi documentația aici.

Bulbasaur gras

Când împingeți x în listă, se va împinge 2,4,…,lungimea primei liste. Trebuie să folosiți

var numbers = [ 1, 2, 3, 4, 5]
var even = []
for(var x = 0; x < numbers.length; x++){
    if(x % 2 == 0){
        even.push(numbers[x])
    }
}

VLAZ

Dacă folosiți un generator și a for..of bucla puteți obține ceva destul de asemănător cu sintaxa Python.

Pentru mai multe informații, puteți consulta articolul din MDN despre iteratori și generatori.