Array.from(obj)
bearbeitet von
Salve!
Hab da ne kurze frage zu Javascript.
Ich initialisiere ein Javscript Array durch `var data = new Array()`.
Dieses wird nach und nach durch verschiedene AJAX Requests mit eindimensionalen JSON Objekten gefüllt, frei nach dem Motto `data['index'] = JSON.parse(response)`. Eine Überprüfung mittels `console.log(data)` gibt etwas aus wie `[1: Object, 2: Object, ...]`. Soweit sogut.
Im nächsten Schritt bin ich nun dabei ein mehrdimensionales Array aus einer PHP zu holen, auch hier das selbe Spiel mit `echo json_encode(myArr)` das Array an die success Function des AJAX request schicken und mit `data['index'] = JSON.parse(response)` an `data` anhängen. Mit `console.log(data)` erhält man dann etwas wie `[1: Object, 2: Object, 3: Array[2]]`. Und mit `console.log(typeof(data['3']))` bekommt man `[Object]`.
Nun möchte ich mit Mustache.js über eben deieses (index 3) eine Schleife laufen lassen mit `{{#3}}{{/3}}`. Diese Methode funktioniert anscheinend nur bei Arrays und nicht bei Objekten (nur als Info). Darum wunderte ich mich warum es nicht bei `data['3']` funktioniert, was laut Konsole ein Array sein soll.
Also kurzerhand in die Reference geschaut und `Array.from()` gefunden. Dies dann fix mit **`console.log(typeof(Array.from(data['3'])))`** überprüft und es wird **Object** ausgegeben.
Nun die große Frage. Warum wird **Object** ausgegeben?
Gruß
Jo
Array.from(obj)
bearbeitet von
Salve!
Hab da ne kurze frage zu Javascript.
Ich initialisiere ein Javscript Array durch `var data = new Array()`.
Dieses wird nach und nach durch verschiedene AJAX Requests mit eindimensionalen JSON Objekten gefüllt, frei nach dem Motto `data['index'] = JSON.parse(response)`. Eine Überprüfung mittels `console.log(data)` gibt etwas aus wie `[1: Object, 2: Object, ...]`. Soweit sogut.
Im nächsten Schritt bin ich nun dabei ein mehrdimensionales Array aus einer PHP zu holen, auch hier das selbe Spiel mit `echo json_encode(myArr)` das Array an die success Function des AJAX request schicken und mit `data['index'] = JSON.parse(response)` an `data` anhängen. Mit `console.log(data)` erhält man dann etwas wie `[1: Object, 2: Object, 3: Array[2]]`.
Nun möchte ich mit Mustache.js über eben deieses (index 3) eine Schleife laufen lassen mit `{{#3}}{{/3}}`. Diese Methode funktioniert anscheinend nur bei Arrays und nicht bei Objekten (nur als Info). Darum wunderte ich mich warum es nicht bei `data['3']` funktioniert, was laut Konsole ein Array sein soll.
Also kurzerhand in die Reference geschaut und `Array.from()` gefunden. Dies dann fix mit **`console.log(typeof(Array.from(data['3'])))`** überprüft und es wird **Object** ausgegeben.
Nun die große Frage. Warum wird **Object** ausgegeben?
Gruß
Jo