Det kan du ikke helt som du beskriver det, da Javascript ikke har definerede typer.
Du kan godt sige f.eks. var array1 = [[]]; - Men det sætter bare første index i den yderste array til at være en ny array, men index 1, 2 osv. er stadig ikke sat til noget, fordi Javascript ikke gennemtvinger samme type i alle indices.
I stedet er du nødt til hver gang du skal bruge den indre array at sætte den til en array. Altså noget i stil med:
Jeg fandt dette på Stack Owerflow, men jeg kan ikke rigtig få det til at virke.
----------------------------------------------------------------- For the general, 2d array case, I'd suggest: 1. Create the "top" array, e.g.: var i // the first-order index in a , j // the second order index in a , a = []
2. Initialize array elements as needed. This is called lazy initialization, and, in this case, it simply involves testing that a[i] exists before we try to assign something to a[i][j], e.g.: if (!a[i]) a[i] = []
In English the above statement reads: "If the i-th element of a is 'falsy', assign an empty array to the i-th element."
3. Finally, assign the actual value to the multideminsional array: a[i][j] = 'whatever'
@2: Den laver et matrix på 10x10 fordi jeg har sat den til at gøre det for eksemplets skyld, men du kan jo ændre det til hvad som helst.
Pointen er, at du ikke skal køre dette fra starten og generere din array, men bare først sætte de indices når du skal bruge dem. Alle arrays er dynamisk størrelse i Javascript.
Dvs. hvis du pludselig finder ud af, at du skal bruge ar[5][8], uden at have brugt den array før, kan du bare gøre:
Nej, alle arrays i Javascript er samtidig associative, dvs. nøglen kan frit sættes og behøver ikke engang være tal. ar[5][8] vil altså lave et array med to dimensioner, hvor kun nøgle 5 er sat i det ydre array og 8 i det indre. Nøglerne 0-7 findes ikke før du bruger dem.
Som en sidebemærkning er der også ofte en god idé at bruge for..in til at løbe gennem arrays i stedet for en standard for-løkke, fordi den tager højde for manglende nøgler.
Du kan stadig godt bruge push som før, du siger bare ar.push() for at sætte den ydre, og ar[ key ].push() for den indre. Men det er ikke nødvendigt, du kan bare sætte værdierne direkte.
Selvfølgelig kan man oprette et 2 dimensionelt array uden "værdi". Husk på at arrays reelt set blot er JavaScript objekter, hvorfor for eksempelvis dette er præcis det samme:
Jeg har ikke hørt fra Viperine så hvis Kerasit vil have point så skriv et svar ellers lukker jeg bare spørgsmålet.
/Flemming
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.