dedlfix: Array.from(obj)

Beitrag lesen

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 mittels console.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 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].

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.