Ergebnis 1 bis 6 von 6
  1. #1
    abcoris ist offline Grünschnabel
    registriert
    08-04-2014
    Beiträge
    1

    Erstellen eines mehrdimensionalen assoziativen Array

    Hallo allerseits,

    ich möchte ein mehrdimensionales assoziatives Array erstellen.
    Auf die Werte 'z' des Array möchte ich zugreifen mit arrayname['x']['y'].

    Alle Suche und alles Probieren führte zu keinem Erfolg.

    Das Array soll in etwa so aussehen:

    HTML-Code:
    var poiimages = new Array();
    poiimages['accommodation'] = new Array();
    poiimages['accommodation']['alpinehut'] = '11';
    alert(poiimages['accommodation']['alpinehut']); // klappt
    poiimages['accommodation']['bed and breakfast'] = '12';
    alert(poiimages['accommodation']['bed and breakfast']); // klappt
    poiimages['accommodation']['camping'] = '13';
    alert(poiimages['accommodation']['camping']); // klappt
    alert(poiimages['accommodation']);  // klappt nicht
    poiimages['amenity'] = new Array();
    poiimages['amenity']['court'] = '21';
    poiimages['amenity']['police'] = '22';
    poiimages['amenity']['town hall'] = '23';
    ...

    alert(poiimages); // klappt nicht

    Vielelicht habt Ihr eine Idee, was ich falsch mache.

    Beste Grüße
    Abcoris
    Geändert von kkapsner (08-04-2014 um 20:59 Uhr) Grund: HTML Tags gesetzt, bitte zukünftig selbst machen.

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.583

    AW: Erstellen eines mehrdimensionalen assoziativen Array

    Verstehe die Frage nicht. Die korrekten funktionierenden Zugriffe hast du doch schon selbst gefunden. Und das alert(poiimages['accommodation']); und alert(poiimages); nicht klappen liegt daran, dass man mit dieser Syntax nicht eine ganze Struktur darstellen kann. Man muss das schon durch iterieren.

  3. #3
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.627

    AW: Erstellen eines mehrdimensionalen assoziativen Array

    Assoziative Arrays macht man in JS auf keinen Fall mit "new Array()" (was man sowieso nie verwenden sollte), sondern mit Objekt(-literalen):
    Code:
    var poiimages = {
    	accommodation: {
    		alpinehut: 11,
    		"bed and breakfast": 12,
    		camping: 13
    	},
    	amenity: {
    		court: 21,
    		police: 22,
    		"town hall": 23
    	}
    };
    Wenn in dem Schlüssel keine Sonderzeichen/Leerzeichen/etc. vorkommen, kann man auch einfacher auf die Einträge zugreifen:
    Code:
    alert(poiimages.accommodation.alpinehut);
    Was heißt denn genau "funktioniert nicht"? Da wird wahrscheinlich nichts ausgegeben, da du Array fälschlicher weise verwendet hast. Arrays sind nur für numerische Schlüssel geeignet. Wenn du das alert() bei einem Objekt machst, wird da nur "[object Object]" stehen. Eine recht gute Darstellung von Objekten bekommt man mit:
    Code:
    alert(JSON.stringify(poiimages, null, "\t"));

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.583

    AW: Erstellen eines mehrdimensionalen assoziativen Array

    Korbinian, new Object ist auch nicht gut?

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.627

    AW: Erstellen eines mehrdimensionalen assoziativen Array

    Naja... wenn du unbedingt viel schreiben willst... hat aber nicht den Nachteil von Array, dass der Konstruktor inkonsequent ist.

  6. #6
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.583

    AW: Erstellen eines mehrdimensionalen assoziativen Array

    Du kannst das Object doch einfach durchiterieren, dann hast du doch die Schlüssel:
    HTML-Code:
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Beispiel abcoris</title>
    	<meta http-equiv="content-type" content="text/html;charset=UTF-8">
    	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    </head>
    <body>
    	<div id="out"></div>
    	<script>
    		var poiimages = {
    			accommodation: {
    				alpinehut:				11,
    				"bed and breakfast":	12,
    				camping:				13
    			},
    			amenity: {
    				court:			21,
    				police:			22,
    				"town hall":	23
    			}
    		};
    		jQuery.each(poiimages,function(g) {
    			if (typeof poiimages[g] == 'object') {
    				jQuery.each(poiimages[g],function(z) {
    					jQuery('#out').append(g+' -> '+z+' -> '+poiimages[g][z]+'<br>');
    				});
    			}
    			else { jQuery('#out').append(g+' -> '+poiimages[g]+'<br>'); }
    		});
    	</script>
    </body>
    </html>

Ähnliche Themen

  1. Erstes Element eines assoziativen Array
    Von ABNetworks.DE im Forum JavaScript
    Antworten: 34
    Letzter Beitrag: 10-09-2010, 14:58
  2. Antworten: 4
    Letzter Beitrag: 01-08-2009, 14:20
  3. Mehrdimensionalen Array sortieren
    Von *chris im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 18-03-2007, 21:11
  4. Ausgabe eines mehrdimensionalen assoziativen Arrays
    Von J!M! im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 22-01-2006, 14:28
  5. mehrdimensionalen array sortieren
    Von planet4 im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 18-06-2004, 12:37

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •