Mai mult
Cum pot crea un tablou bidimensional în JavaScript?
Am fost de lectură on-line, iar unele locuri mi-e't posibil, unii spun că este și atunci dă un exemplu și altele infirma exemplu, etc.
-
Cum am declara o 2 matrice dimensionale în JavaScript? (presupunând că l's posibil)
-
Cum as putea accesa membrii săi? (
myArray[0][1] " sau " myArray[0,1]
?)
1077
45
Pur și simplu a face fiecare element din matrice o matrice.
Similare pentru a activa's a răspunde, aici's o funcție pentru a crea un n-dimensional matrice:
Javascript are doar 1-dimensional matrice, dar vă puteți construi tablouri de tablouri, ca și ceilalți subliniat.
Următoarele funcții pot fi folosite pentru a construi un 2-d matrice de dimensiuni fixe:
Cel mai simplu mod:
Cum de a crea un gol tablou bidimensional (o linie)
2 și 4, fiind prima și a doua dimensiuni, respectiv.
Folosim
Array.from
, care poate lua o mulțime-ca param și un opțional de cartografiere pentru fiecare dintre elemente.Același truc poate fi folosit pentru a a Crea o matrice JavaScript care conțin 1...N
Alternativ (dar mai ineficiente 12% cu
n = 10.000 de
)Performanța scădere vine cu faptul că trebuie să avem mai întâi valorile parametrilor inițializat la fug
.map
. Amintiți-vă că "Matrice" nu va aloca pozițiile până la tine pentru a printr.umple
sau direct atribuirea valorii.Follow-up
Aici's o metodă care pare a fi corectă, dar are probleme.
În timp ce acesta se întoarce aparent dorit tablou bidimensional (
[ [ <4 gol elemente> ], [ <4 gol elemente> ] ]
), există o captură: prima dimensiune tablouri au fost copiate de referință. Asta înseamnă că oarr[0][0] = 'foo'
ar schimba de fapt două rânduri în loc de una.Motivul pentru care unii spun că e't posibil, pentru că este un tablou bidimensional este de fapt doar o serie de tablouri. Alte comentarii pe aici ofere perfect valabil metode de a crea două-dimensional matrice în JavaScript, dar cea mai pura punct de vedere ar fi că ai o singură dimensiune matrice de obiecte, fiecare dintre aceste obiecte ar fi un dimensional matrice formată din două elemente.
Deci, ca's cauza contradictorii puncte de vedere.
Puțini oameni arăta utilizarea de push: Pentru a aduce ceva nou, eu vă va arăta cum pentru a inițializa matrice cu o anumită valoare, de exemplu: 0 sau un șir gol "". Amintind că, dacă ai un 10 de elemente de matrice, în javascript ultimul indice va fi de 9!
exemple de utilizare:
Două-liner:
Acesta va genera o matrice de lungime 10, pline cu tablouri. (Împinge adaugă un element într-un tablou și returnează noua lungime)
Cel mai bun răspuns pare a fi
Rețineți putem't direct umple cu rânduri de umplere folosește superficial constructor de copiere, prin urmare, toate rândurile vor partaja same memorie...aici este un exemplu care demonstrează cum fiecare rând ar fi partajată (luate de la alte răspunsuri):
Aceasta este ceea ce am realizat :
Acest scrie-mi bineeshkumar
Cel mai simplu mod:
Două-dimensional matrice sunt create în același mod unic dimensional matrice sunt. Și le puteți accesa ca
matrice[0][1]
.Am'm nu sunt sigur dacă cineva a răspuns la acest lucru, dar am gasit aceasta a lucrat pentru mine destul de bine
de exemplu:
Pentru o a 2-dimensional matrice, de exemplu.
Pentru a crea o matrice 2D în javaScript putem crea o Serie întâi și apoi se adaugă Tablouri ca's elemente. Aceasta metoda va returna o matrice 2D cu anumit număr de rânduri și coloane.
pentru a crea o Matrice a folosi această metodă ca mai jos.
Pentru a crea un non-rare "2D" matrice (x,y) cu toți indicii adresabile și valorile setat la null:
bonus "3D" Matrice (x,y,z)
Modificări și corecții pe aceasta au fost menționate în comentarii și la diferite puncte în răspuns la această întrebare, dar nu ca un răspuns real deci, eu sunt adăugarea de aici.
Ar trebui remarcat faptul că (similar cu cele mai multe alte răspunsuri) are O(x*y) complexitatea timp așa că, probabil, nu este potrivit pentru foarte tablouri de mari dimensiuni.
Utilizarea Largă Comprehensions
În JavaScript 1.7 și mai mare, puteți utiliza matrice comprehensions pentru a crea tablouri bidimensionale. Puteți filtra, de asemenea, și/sau de a manipula înregistrările în timp ce de umplere matrice și don't trebuie să utilizați bucle.
Puteți crea orice
n x m
matrice vrei și umple-l cu o valoare implicită de asteptareMai multe exemple și documentație pot fi găsite aici.
Vă rugăm să rețineți că acest lucru nu este o caracteristică standard încă.
Abordarea mea este foarte similar cu @Bineesh răspuns, dar cu o abordare mai generală.
Puteți declara dublu matrice, după cum urmează:
Și stocarea și accesarea conținutului în felul următor:
Acest lucru se va imprima rezultatul așteptat
Pentru o linie iubitorii Matrice.din()
Un altul (de la comentarii de dmitry_romanov) utilizarea Array().fill()
Javascript nu are suport pentru două-dimensional matrice, în loc să stocăm o matrice într-o altă matrice și de a prelua datele din matrice în funcție de ceea ce poziție din matrice care doriți să o accesați. Amintiți-vă matrice numerotarea incepe de la ZERO.
Exemplu De Cod: