Ссылка на значения массива во вложенных объектах / массивах - PullRequest
1 голос
/ 13 марта 2012

У меня есть следующее: http://jsfiddle.net/Ve5ZQ/6/

Я пытаюсь сослаться на значение x в парах [x, y] в chartGPS.series [0] .data, чтобы определить наибольшее значение 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 ]

2 голосов
/ 13 марта 2012

Если вы 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]).

0 голосов
/ 13 марта 2012

См. Ответ @CMS на вопрос Цикл массива в JavaScript . Там очень подробно объясняется, почему не следует использовать in для массивов.

0 голосов
/ 13 марта 2012

Вы должны использовать theSeries[i].x, поскольку theSeries [i] является реальным объектом с такими свойствами, как x, y и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...