迭代虽然JSON数组中p5.js

迭代虽然JSON数组中p5.js

问题描述:

我有一个返回服务器: JSON Image迭代虽然JSON数组中p5.js

我想通过在p5.js

var ms = [] 

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

这个数据,我将返回一个数组,但迭代它似乎没有回报任何明智的东西。

Chrome debug of JSON

但是,如果我相同的数据粘贴到的JavaScript控制台我得到不同的数据:

pasted JSON

怎么做,我不是遍历这个数据(而不是加载作为数组)或将其转换为数组?

+0

这似乎是一个数组。一个数组只是一个带有索引数字键的JS对象,基本上是一个'length'字段。 – Carcigenicate

+0

它是一个数组,你可以用它证明**的console.log(MS [0] .rate)** –

+0

它不是一个数组恐怕 ms.length是不确定的 但 MS [0] .rate作品 –

我想你的意思是这样的:

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

毫秒只是对象的关键为{0:{'时间':...},1:...} – jettpleyn

+0

是 - 谢谢。 javascript数据结构的奇怪永远不会令我惊叹, –

你越来越对象的数组,这里是你如何可以简单地重复他们

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) 
 
}

+0

啊 - 但在你的情况下,你正在创建一个数组。我的例子没有。 –

正如其他人所指出的在评论中,你所拥有的本质上是一个数组或类似数组的对象,可以更加精确地将它们转换为ap罗珀阵列像这样:

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

悲伤 - 但它不起作用。 –

+0

是的,我可能已经有点快速发布这个,因为这种方法工作您的对象需要有一个长度属性。我用一种方式更新了这篇文章,以使其发挥作用。 – Hyddan

jettpleyn有实际工作在P5的唯一答案。

最终虽则 - 我想通了,我可以让我的生活更容易通过改变JSON从服务器返回一个对象包含数组,而不是一个阵列直接

{ "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}] 
 
}