Avatar billede sqwer Nybegynder
04. oktober 2001 - 23:52 Der er 15 kommentarer og
4 løsninger

Er det tilladt at bruge bogstaver som index i array?


Altså:
var names=new Array();
names[\"ab\"]=\"Navn 1\";
names[\"cde\"]=\"Navn 2\";
osv.

Det fungerer tilsyneladende fint hos mig, men jeg synes det virker lidt utraditionelt, så jeg ville gerne høre om jeg kan forvente at det fungerer generelt.
Avatar billede storslem Nybegynder
04. oktober 2001 - 23:53 #1
Ja, så vidt jeg ved og forstår - så er det almindelig praksis. (:
Avatar billede storslem Nybegynder
04. oktober 2001 - 23:55 #2
Aj, det skulle nok have været en \"kommentar\"!
Jeg er ikke JS\'er...(:
Avatar billede jakoba Nybegynder
05. oktober 2001 - 00:00 #3
ja det kan du godt. det er en del af sproget at det bør virke.
Avatar billede nute Nybegynder
05. oktober 2001 - 00:05 #4
en array er *alltid* indexert fra 0-n. I ditt eksempel, så vil

names[\"ab\"].length

returnere 6 og ikke 1 som den villa ha gjort hvis det var en array.

Helt ærlig så *aner* jeg ikke hva som foregår, men det er *ikke* mulig å indexere sin array ved bruk av bokstaver

/nute
Avatar billede sqwer Nybegynder
05. oktober 2001 - 00:14 #5
>> nute
det synes jeg da virker meget rimeligt.
names[\"ab\"] er jo en streng med længden 6, så hvorfor i alverden skulle den returnere 1?
(hvad har jeg misset?)
Avatar billede jakoba Nybegynder
05. oktober 2001 - 00:20 #6
Nute >> Jo det er! Det er sågar standard at det skal være muligt

der indexeres ikke med bogstavkoderne men den den tekststreng der blev brugt da arrayelementet blev oprettet.

du bruger det fx hvergang du adresserer et billede på siden via
    document.images[ billednavn ]

images er et javascriipt array i document objektet.

mvh JakobA
Avatar billede nute Nybegynder
05. oktober 2001 - 00:22 #7
sqwer >> hmmm...kanskje jeg formulerte meg litt galt. Hvis du kjører denne blokk kode:

var names=new Array();
names[\"ab\"]=\"Navn 1\";
names[\"cde\"]=\"Navn 2\";

og håper på at du oppretter en array med 2 elementer, så burde man jo få resultatet 2 hvis man spør \'names.length\', meeeen...man får returert 0. Med andre ord, så legger du ikke \'Navn 1\' og \'Navn 2\' inn i ditt array

U c ?
Avatar billede sqwer Nybegynder
05. oktober 2001 - 00:26 #8
nute>> jeg kan godt se hvad du mener med length (prøvede det selv lige før), men jeg kan sagtens hente dem ud fra arrayet, så de må jo være der.
names[\"ab\"] giver Navn 1 uden problemer.
Avatar billede nute Nybegynder
05. oktober 2001 - 00:26 #9
jakoba >> du har rett med hensyn til images arrayet (og lignende arrays). Men så vil jeg gjerne se et eksempel på impementasjon av dette ??

(( dette må da være en javascript ting ?? Jeg har *aldri* sett det i bruk eller hørt om det i Java ))

/nute
Avatar billede nute Nybegynder
05. oktober 2001 - 00:28 #10
sqwer >>jeg kan godt se at man kan hente dem ut...det kan jeg også klare, men som jeg skrev i min første posting: \"Helt ærlig så *aner* jeg ikke hva som foregår\". Kanskje jakoba har en fornuftig frklaring og et eksempel på dette...

/nute
Avatar billede jakoba Nybegynder
05. oktober 2001 - 00:44 #11
nute >> du har ret, der er ingen parallell i Java til JavaScripts \'associative arrays\' den element i sproget er kommet fra Perl.

mvh JakobA
Avatar billede jakoba Nybegynder
05. oktober 2001 - 00:49 #12
se fx i http://www.eksperten.dk/spm/117114 forneden
Kommentar fra jakoba 04/10 2001 15:21:00

der bygges arrayet params op som et streng-indexeret array hvor parameternavnene er idexer.

mvh JakobA
Avatar billede nute Nybegynder
05. oktober 2001 - 00:52 #13
jakoba @ 05/10 2001 00:44:34 >> AHA !!!! *så* er det jo en grunn til at jeg ikke forstår :-D ( kjenner ikke Perl )

*kikker på spm/117114 for å _prøve_ å forstå* :)

/nute
Avatar billede nute Nybegynder
05. oktober 2001 - 00:55 #14
hmmmm....tror ikke jeg liker den måten å kode på :-| Men det skal jo testes...:)
Avatar billede jakoba Nybegynder
05. oktober 2001 - 00:57 #15
korrekt. der er hamrende ineffektivt i forhold til numerisk indexering. men det gør ikke så meget når det er et scriptsprog, for det er jo grumme langsomt alligevel.
Avatar billede jumper Nybegynder
05. oktober 2001 - 12:37 #16
ALLE objekter i Javascript er dybest set associative arrays, hash-tabeller, hvilket vil sige at

mitObjekt.minProperty

er akkurat det samme som

mitObjekt[\"minProperty\"]

ligesom eval(\"minVar\" + 1 + \" = 1;\")

er akkurat det samme som

window[\"minVar\" + 1] = 1;

og

this[\"minVar\" + 1] = 1;

Associative arrays gør f.eks. at du ALDRIG har brug for eval til et så simpelt job som dynamiske objekt referencer ;o)

http://msdn.microsoft.com/library/en-us/script56/html/js56jsconUsingArr.asp

/Thor
Avatar billede sqwer Nybegynder
05. oktober 2001 - 19:45 #17
nå, jeg må hellere finde en måde at få fordelt pointene her.
jakoba, kan du ikke lige lægge et svar, så deler jeg lige over.
Avatar billede jakoba Nybegynder
05. oktober 2001 - 19:52 #18
ok
Avatar billede storslem Nybegynder
05. oktober 2001 - 23:38 #19
Tak for point!!!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester