: Retur til startside : Til JavaScript startside

Globale objekt Array

Erklres med Ar = new Array();//uden at angive strrelse, den ndres opad nr ndvendigt
eller med Ar = new Array(17)// opret array med 17 elementer (der dog alle er "undefined")
eller med Ar = new Array(15, -22, "Olsen", 2*8+1, 8+1)// Lav en array med 5 elementer som anfrt
: Om arrays med en record-lignende struktur


var Ar = new Array(15, -22, "Olsen", 2*8+1, 8+1);       Ar.toString( ) =
var Ar2 = new Array('dig', 'og', 'mig') Ar2.toString( ) =
Ar.concat(Ar2).toString( ) = Ar.toString( ) =   ( alts undret )
Ar.concat(Ar2).toString( ) = Ar.toString( ) =   ( alts undret )
Ar.toString( ) =   ( alts undret )
Ar.length =   Ar ejer variabel length = antal elementer
 
objekt Array ejer kun den ne variabel length, men mange metoder som jeg eksemplificerer nedenfor (med Ar og Ar1):
concat(string)Ar.concat(Ar2) =
Bagefter er Ar undret  
join("char") Ar.join('A') =     Stter elementerne sammen til en streng med A til adskillelse.
Giver mening med mellemrumstegn:   Ar.join(" ") =
Bagefter er Ar undret  
join("") Ar.join() =     Mangler 'char' indsttes i stedet kommaer,   ligesom toString() :   Ar.toString() =
push(variabel)Ar.push(Ar2) =             og bagefter er
 Med Internet Explorer 6.0 str at Ar.toString() =   og det er jo forkert.
Det 6.te element ( Ar[ 5 ] ) er en array, den fjerner jeg igen:
pop( ) Ar.pop( ) =

Bagefter er Ar NDRET  
 NB: Kun det bagerste element kan pop'es ,  pop( ) tager ingen parametre
reverse( ) Ar.reverse( ) =
Bagefter er Ar NDRET  
shift( ) Ar.shift( ) =
Bagefter er Ar NDRET  
slice(i) Ar.slice(3) =
Bagefter er Ar undret  
slice(i,j) Ar.slice(2,3) =     fra index=2 til elementet fr index=3
Bagefter er Ar undret  
slice( i, j ):     Ar.slice(1,0) =      Ar.slice(1,1) =      Ar.slice(1,2) =      Ar.slice(1,3) =      Ar.slice(1,4) =      Ar.slice(1,5) =
Det er elementerne fra index i til index j-1
splice(index,antal [,vrdi..] )Ar.splice(1,4,'Knudsen', 'Ida', 6, 7, 8, 9) =     Erstat elementer: 1.ste parameter (1) = Indes for 1.ste element der skal erstattes, 2.den paramerer (4) = antal elementer der skal erstattes,  Flgende parametre (valgfrie) er nye vrdier for de elementer der skal erstattes. I eksemplet her erstatter 6, 7, 8 og 9 ikke noget men tilfjes i forlngelse af Ar, s nu er Ar.length =
Ar.splice(3,2,'Olga') =   Nu er index 3 = '6' erstattet med 'Olga', index 4 = '7' er fjernet, og index 5 = '8' er rykket ned p index 4's plads , s nu er Ar[4] =
Ar.splice(2,1) =   Fjerner 1 element fra index nr 2
Jeg omdefinerer Ar = new Array( )
sort( )Ar.sort( )=
Bagefter er Ar NDRET  
Sorteringen er her sket efter Ansi-nummret som er tegnenes talvrdi i tabellen
sort( strengsammenlign ) strengsammenlign( e1, e2 ) er en funktion til sammenligning af to elementer i arrayen,, her kaldet e1 og e2. Den skal returnere et negativt tal, hvis e1 kommer fr e2, positivt hvis e1 kommer efter e2, og nul hvis de er ens.
Denne funktion m man selv programmere, det har jeg gjort, se bare :  
Ar.sort(strengsammenlign)=
bagefter er Ar NDRET  
Internet Explorer er svag, nr det glder om at sortere en array, Netscape og Firefox virker meget bedre. Nedenfor har jeg et indtastnings-testfelt hvor du kan forsge at indtaste en array, de enkelte elementer skal adskilles med komma. Hvis du ikke har for mange elementer virker Internet Explorer, men hvis du indtaster (Blok ind, tast Ctrl-C, klik i feltet, tast Ctrl-V) :
rskbing,Aalborg, Kbenhavn, @mager, aabo, bo, aaabe, abe, restad, restad, Ougadugu, gir, aabo, zzzz, zzz
s fr du med Internet Explorer version 8 den ulidelige, sdvanlige hovskisnovski-meddelelse 'der opstod en fejl p siden'. Jeg kan ikke se anden forklaring end at I.Explorer ikke kan finde ud af at bruge mere end en lille del af hukommelsen og derfor let lber tr.
Med Netscape og Firefox virker det upklageligt.
indtast Ar, de enkelte elementer adskildt med komma:

og klik her for at f den sortert med Ar.sort(strengsammenlign)
 


Man kan ogs definere array med en record-type struktur:
<script>
functionnyMand(alder, navn, drik){
this.alder=alder
this.navn=navn
this.drik=drik}

varra=newArray(newnyMand(18, "Olga", "Whisky"), new nyMand(81, "Ole", "Cognac"));
document.write("<table border=1>");
document.writeln("<tr><td>alder</td><td>navn</td><td>drik</td></tr>");
for(vari=0;i<ra.length; i++)
document.writeln("<tr><td>"+ra[i].alder+"</td>"
+"<td>"+ra[i].navn+"</td>"
+"<td>"+ra[i].drik+"</td></tr>");
document.writeln("</table>")
</script>

ra er en normal array, men de enkelte elementer er arrays med en record-type struktur. Den slags array har ikke en veldefineret length:
ra[1].length= (og ikke 3)
ra.length=

Functionen nyMand() ovenfor vil nogen opfatte som en objektdefinition af en ny type objekt ved navn nyMand. Det er et sprgsml om ord, men berettiges af at man kan tilfje metoder. Her tilfjes metoden tilstreng():

function tilstreng(){ return this.navn+" er "+this.alder+" r gammel og drikker "+this.drik}

og i function nyMand(...) skal tilfjes

this.tilstreng=tilstreng // bemrk at her skal ikke () efter tilstreng

Jeg udskriver nu ra med

<script>for (var j=0; j<ra.length; j++)
document.writeln("<br>"+tilstreng(ra[i])) </script>