我有以下内容:http://jsfiddle.net/Ve5ZQ/6/
我试图在chartGPS.series [0] .data中引用[x,y]对中的x值来确定当前系列中x的最大值。但是,我似乎引用了一个未定义的值进行比较。
'data'似乎是一个数组数组,因此应该允许迭代它的对:
var lastUpdate = 0;
var theSeries = chartGPS.series[0].data;
// Loop to determine last updated timestamp (x value)
for (var i in theSeries) {
// I think theSeries[i][0] should be the x value for each pair
alert(theSeries[i]); // Always alerts "undefined"
if (theSeries[i][0] > lastUpdate) {
lastUpdate = theSeries[i][0];
}
}
我做错了什么?
答案 0 :(得分:2)
如果您在循环中console.log(theSeries[i]);
,则可以看到theSeries
数组的每个索引都有一个属性x
:
for (var i in theSeries) {
// I think theSeries[i][0] should be the x value for each pair
alert(theSeries[i]);
if (theSeries[i][0] > lastUpdate) {
lastUpdate = theSeries[i][0];
}
}
更改为:
for (var i = 0, len = theSeries.length; i < len; i++) {
console.log(theSeries[i]);
if (theSeries[i].x > lastUpdate) {
lastUpdate = theSeries[i].x;
}
}
以下是演示:http://jsfiddle.net/Ve5ZQ/8/
以下是数组中的示例对象(每行是不同的属性,某些属性具有子属性):
-> Aa
--> _high: 809
--> category: 5326
--> clientX: 736.7
--> config: Array[2]
--> graphic: pa
--> plotX: 736.7
--> plotY: 55.4
--> pointAttr: Array[0]
--> series: c
--> x: 5326
--> y: 73
--> yBottom: null
--> __proto__: Object
这是通过上面的JSFiddle从我的控制台复制的,注意它在循环中有一个console.log(theSeries[i])
行。
答案 1 :(得分:0)
你应该使用theSeries[i].x
,因为Series [i]是一个具有x,y等属性的实际对象......
答案 2 :(得分:0)
请参阅@CMS对问题Loop through array in JavaScript的回答。它非常彻底地解释了为什么in不应该与数组一起使用。