在嵌套对象/数组中引用数组值

时间:2012-03-12 22:18:44

标签: javascript jquery highcharts

我有以下内容: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];
    }
}

我做错了什么?

3 个答案:

答案 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不应该与数组一起使用。