Avatar billede Mik2000 Professor
21. februar 2011 - 17:33 Der er 6 kommentarer og
1 løsning

Find i array

Hej

Jeg har et array
arrayname = new Array(1,2,3,4,5,6,7,8,9,10,11,12);

Jeg vil gerne søge i det og har fundet frem til
arrayname.join().indexOf(1)

Det fungerer fint - finder den noget fortæller den hvor, og ellers giver den -1 som er det jeg skal bruge

Mit problem er at hvis mit array er
arrayname = new Array(6,7,8,9,10,11,12);
og jeg kører
arrayname.join().indexOf(1)

så giver den IKKE en fejl fordi den finder 1 i 10, 11 og 12

Kan jeg ikke på en eller anden måde sikre den skal matche en post i arrayet, så 1 kun findes hvis der er 1 og ikke ved 10, 21 osv?

Jeg ved jeg kan kører for indeni, men det betyder jeg kommer til at køre den en masse gange, så tænke der måske var noget der minder om join.indexOf men hvor hele "posten" i arrayet skal matche og ikke kun dele af det
Avatar billede tjens Nybegynder
21. februar 2011 - 18:07 #1
.join() ødelægger arrayet, så det bliver til en tekststreng.

Array selv har ingen indexOf, så du bliver nødt til at skrive et lille loop der tester hvert index.


Men hvad skal det bruges til?
Måske kunne du få glæde af JSON-objekter eller associative arrays i stedet for normalt array.
Avatar billede Mik2000 Professor
21. februar 2011 - 18:17 #2
Hej

Tak for svaret

Det er fordi den gemmer alle id'er fra nogle poster (fra PHP). De skal så kunne flyttes frem og tilbge mellem 2 multiple select felter, og jeg bruger den så til at tjekke om de allerede står i destination feltet
Avatar billede tjens Nybegynder
21. februar 2011 - 20:27 #3
Jeg mener ikke du behøver en array i javascript, fordi du allerede har select 2 som indeholder id'erne i enten text eller value.

Jeg har udvidet eksemplet fra forrige spørgsmål, så der chekkes, om en værdi findes i den aktuelle select, inden den addes.

Prøv at trykke på knappen 2 gange: http://tjens.dk/eksperten/932111/ og se at der nu kommer fejlmelding.
Avatar billede intenz Novice
21. februar 2011 - 21:29 #4
Du kan også vælge et bruge et object istedet for dit array. Objecter er bedre når du skal slå op på en key. Arrays er bedre hvis du kun skal bruge value, og er ligeglad/ikke bruger key.

Du kan gemme i objectet med:
var objectName = {}; // opret object
objectName[1] = true;
objectName[2] = true;
objectName[3] = true;
...osv

og checke det med:
if (objectName.hasOwnProperty(1)) {
    alert('already set');
}
Avatar billede Mik2000 Professor
21. februar 2011 - 23:49 #5
Hej

Tjens: Det havde du da helt ret i :). Det virker det hele nu :). Mange tak for hjælpen. Smid et svar og så er der point :)

intenz: Også mange tak for dit svar - det andet virkede dog, så nåede ikke at få prøvet det, men tak for det alligevel :)
Avatar billede tjens Nybegynder
22. februar 2011 - 21:55 #6
Svar.

Jeg vil opfordre dig til at studere  tutorials om HTML-DOM og om Object som intenz nævner:
Så får du udvidet din javascript værktøjskasse.
Avatar billede Mik2000 Professor
25. februar 2011 - 10:43 #7
Hej

Det prøver jeg

Tak for hjælpen :)
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