Tach!
Ich initialisiere ein Javscript Array durch
var data = new Array()
.
Kann man abkürzen zu var data = [];
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 mittelsconsole.log(data)
gibt etwas aus wie[1: Object, 2: Object, ...]
. Soweit sogut.
Wenn du Strings wie in 'index'
(mit Anführungszeichen) verwendest, erzeugst du Objekteigenschaften und keine Array-Einträge. Ich nehme an, du meinst/nimmst keine Strings sondern Zahlen.
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 mitdata['index'] = JSON.parse(response)
andata
anhängen. Mitconsole.log(data)
erhält man dann etwas wie[1: Object, 2: Object, 3: Array[2]]
. Und mitconsole.log(typeof(data['3']))
bekommt man[Object]
.
Unterscheide zwischen einer Zahl als Array-Index und einem String, auch wenn Javascript für dich den String '3'
in die Zahl 3
umwandelt.
Nun die große Frage. Warum wird Object ausgegeben?
Es gibt in Javascript keinen Datentyp Array. Arrays sind auch nur Objekte. Prüfen auf ein Array kann man mit Array.isArray(...)
dedlfix.