2016-11-23 3 views
1

Ich habe einen Server, der zurückgibt: JSON ImageIterierte obwohl JSON-Array in p5.js

ich in p5.js durch diese Daten iterieren wollen

var ms = [] 

function preload() { 
    var url ='https://dest/url' 
    ms = loadJSON(url) 
} 

Was ich ein Array zurück erwartet, aber es scheint nichts Vernünftiges zurückzugeben.

Chrome debug of JSON

Allerdings, wenn ich die gleichen Daten in die Javascript-Konsole einfügen erhalte ich unterschiedliche Daten:

pasted JSON

Wie kann ich entweder Iterierte über diese Daten (es nicht als geladen Array) oder konvertieren Sie es in ein Array?

+0

That scheint ein Array zu sein. Ein Array ist nur ein JS-Objekt mit numerischen Schlüsseln für Indizes und im Grunde genommen ein "Länge" -Feld. – Carcigenicate

+0

es ist ein Array, das Sie es mit ** console.log nachweisen konnte (ms [0] .rate) ** –

+0

es kein Array ist, ich habe Angst ms.length undefiniert ist noch ms [0] .rate Werke –

Antwort

4

Ich glaube, Sie dies bedeuten:

var array; 
for (var key in ms) { 
    if (!array) { 
     array = [a[key]]; 
    } else { 
     array.push(a[key]); 
    } 
} 
console.log(array); // [ {'time': .... }, {...}, .. ] 
+0

ms ist nur OBJECT mit Schlüssel als {0: {'Zeit': ...}, 1: ...} – jettpleyn

+0

yup - danke. Die Fremdheit von JavaScript-Datenstrukturen verblüfft mich immer, –

1

Sie sind ein Array von Objekten bekommen, ist hier, wie Sie sie einfach

var data = [{"time":"12345","rate":"12345.12"}, {"time":"12345","rate":"12345.12"}, {"time":"12345","rate":"12345.12"}, {"time":"12345","rate":"12345.12"}, {"time":"12345","rate":"12345.12"} ]; 
 

 
for(obj of data){ 
 
    console.log("time and rate: ", obj.time, obj.rate) 
 
}
laufen kann

+0

Ah - aber in Ihrem Fall erstellen Sie ein Array. Mein Beispiel nicht. –

0

Wie andere haben darauf hingewiesen, in den Kommentaren, was Sie haben, ist im Wesentlichen ein Array oder ein Array-artiges Objekt, um genauer zu sein, und diese können leicht in ap umgewandelt werden roper array wie folgt:

ms.length = Object.keys(ms).length; 
var msArray = Array.prototype.slice.call(ms); 
+0

Traurig - aber es funktioniert nicht. –

+0

Ja, ich bin vielleicht ein bisschen schnell gewesen, dies zu posten, damit diese Methode funktioniert, muss Ihr Objekt eine Längeneigenschaft haben. Ich habe den Beitrag mit einer Möglichkeit aktualisiert, ihn zum Laufen zu bringen. – Hyddan

0

jettpleyn hatte die einzige Antwort, die tatsächlich in P5 gearbeitet hat.

Schließlich aber - es dämmerte mir, dass ich leichter mein Leben machen könnte, indem von dem Server der JSON auf ein Objekt zurückgegeben ein Array anstatt ein Array mit direkt

{ "data": 
 
[{"time":"85579.54189181328","rate":177.66287},{"time":"81978.61475682259","rate":177.66287},{"time":"78377.54175782204","rate":177.66287},{"time":"74776.58741879463","rate":177.66287},{"time":"71175.57481980324","rate":177.66287},{"time":"67574.59330582619","rate":177.66287},{"time":"63973.427922964096","rate":177.66287},{"time":"60372.39295697212","rate":177.66287},{"time":"56771.37366294861","rate":177.66287},{"time":"53170.276379823685","rate":177.66287},{"time":"49569.180530786514","rate":177.66287},{"time":"45968.02240085602","rate":177.66287},{"time":"42365.825628995895","rate":177.66287},{"time":"38764.64792180061","rate":177.71416},{"time":"35163.241872787476","rate":177.71416},{"time":"31562.00651884079","rate":177.72556},{"time":"27960.898827791214","rate":177.73126},{"time":"24359.687824964523","rate":177.67998},{"time":"20758.03328180313","rate":177.67998},{"time":"17156.808887004852","rate":174.53839},{"time":"13555.605601787567","rate":174.9276},{"time":"9954.546007871628","rate":175.35431},{"time":"6353.40945982933","rate":175.96582},{"time":"2752.3464789390564","rate":175.84541}] 
 
}