Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[js] gebruik een value als naam van een array

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een aantal arrays en bepaal met een value welke ik nodig heb.
JavaScript:
1
2
3
var array_1 = new Array();
var array_2 = new Array();
var array_2 = new Array();

enz.

deze arrays worden vanuit php aangemaakt en gevuld (en middels 'echo' in php uitgeput als javascritpcode)
nu heb ik een variabele waarin het juiste getal zit (var getal met een waarde als 1 t/m oneindig)

ik wil dus het volgende kunnen doen:
JavaScript:
1
alert(array_getal['0']);

om het eerste ellement uit het juiste array te krijgen.

Weet iemand hier een oplossing voor?

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 28-11 23:34

NetForce1

(inspiratie == 0) -> true

een twee-dimensionale array gebruiken.
JavaScript:
1
2
3
var array = new Array();
array[1] = new Array("hoi");
alert(array[1][0]); // -> hoi

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Anders kan je altijd nog eval gebruiken, maar pas er wel mee op, je moet zeker weten dat je input valide is, anders kunnen er nare dingen gebeuren.

  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 21:26

Pinobigbird

doesn't share food!

Zo dus ongeveer:
JavaScript:
1
alert(eval("array_" +  getal)[0]);

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 09:41

RM-rf

1 2 3 4 5 7 6 8 9

alle global variabelelen zijn zelf weer properties van het window-object

code:
1
2
var ditiseenwaarde = "Dit is een waarde"
alert( "value: "+window["ditiseenwaarde"] )


dat is ook toepasbaar om je variebelen aan te roepen die dan een Array() bevatten,
dus bv
code:
1
doFunctie ( window["Array_"+((checkvar)?1:2)] )


dat is meestal een stuk beter controleerbaar dan die lelijke 'eval'

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Een global variabele is gewoon een property van het window object, dus je kan ook dit doen:
JavaScript:
1
2
var getal = '1';
alert(window['array_' + getal][0]);

maar dit soort dingen roepen toch wel om een multi-dimensionale array...

Intentionally left blank


Verwijderd

Topicstarter
Pinobigbird schreef op woensdag 14 november 2007 @ 17:04:
Zo dus ongeveer:
JavaScript:
1
alert(eval("array_" +  getal)[0]);
Dit werkt inderdaad perfect! bedankt voor de hulp

Heb nog een aanvullend vraagje:

ik wil controleren of een array is gedeclareerd
JavaScript:
1
2
3
4
var array_1 = new Array();

if(array_1) alert('deze is ok');
if(array_2) alert('deze is niet ok');

De arrays worden door wat loopjes en database-interactie aangemaakt en ik wil dus controleren welke bestaat om te voorkomen dat er javascript errors komen als hij de lengte van een array wil bepalen en het array niet bestaat.

ik heb al geprobeerd zonder resultaat:
JavaScript:
1
2
3
4
if (window.eval("array_" +  getal) === undefined) alert("x is undefined/undeclared"); 
else if (eval("array_" +  getal) === false) alert("x is false"); 
else if (eval("array_" +  getal) === true) alert("x is true"); 
else alert("x is " + x); 


misschien iemand die mijn uit de brand kan helpen? anders moet ik een extra array gaan maken om bij te houden welke bestaat en welke niet..

[ Voor 15% gewijzigd door Verwijderd op 14-11-2007 20:49 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Kijk eens naar typeof binnen Javascript ;)

Overigens ga nou geen eval gebruiken, want dat is vies, terwijl zowel RM-rf in "[js] gebruik een value als naam van een ..." als crisp in "[js] gebruik een value als naam van een ..." met een beter alternatief komen

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 14 november 2007 @ 20:46:
[...]
Heb nog een aanvullend vraagje:

ik wil controleren of een array is gedeclareerd

[...]

misschien iemand die mijn uit de brand kan helpen? anders moet ik een extra array gaan maken om bij te houden welke bestaat en welke niet..
Ook dan is het makkelijker om het op deze manier te doen:
JavaScript:
1
2
if (window['array_' + getal] === undefined)
    alert('bestaat niet');


en nogmaals: waarom gebruik je geen multidimensionale array? dan hoef je helemaal geen rare fratsen uit te halen...

Intentionally left blank


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

Als we toch de eval() aan het bashen zijn, ma ik dan ook ff bashen op de Array constructor? :P

ipv new Array("bla") gewoon ["bla"] gebruiken. Is kort, helder, en minder foutgevoelig ;)

日本!🎌

Pagina: 1