почему массив не определен? - PullRequest
2 голосов
/ 16 июня 2011

при выполнении следующего кода firebug сообщает мне: values ​​[this.geo.value] не определено в чем проблема?

$.get('./RDFexamples/tin00089_test2.rdf', null, function (rdfXml) {
var rdf, json = {};
var values = new Array();

rdf = $.rdf()
    .load(rdfXml)
    .prefix('', 'http://ontologycentral.com/2009/01/eurostat/ns#')
    .prefix('qb', 'http://purl.org/linked-data/cube#')
    .prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
    .prefix('dcterms', 'http://purl.org/dc/terms/')
    .prefix('sdmx-measure', 'http://purl.org/linked-data/sdmx/2009/measure#')
    .where('?observation a qb:Observation')
    .where('?observation dcterms:date ?date')
    .where('?observation sdmx-measure:obsValue ?measure')
    .where('?observation :geo ?geo')
    .each(function () {
        values[this.geo.value].push(this.measure.value);
        //alert(this.date.value)
        //alert(this.measure.value)
        //alert(this.geo.value)
    }
    );
    alert(values);
});

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

values ​​[this.geo.value] никогда не инициализируется, поэтому вы не можете сделать .push, потому что значения [this.geo.value] не определены, вам сначала нужно создать массив из значений [this.geo.value] прежде чем вы можете толкнуть вещи в него.

Пример псевдокода

if values[this.geo.value] == undefined {
    values[this.geo.value] = []
}
values[this.geo.value].push(...)
2 голосов
/ 16 июня 2011

push - это метод самого объекта Array - вы вызываете его для значения внутри Array (которое, вероятно, не было установлено, следовательно, 'undefined'). Неясно, что такое this.geo.value, но при условии, что это индекс элемента массива, который вы пытаетесь установить, ваши параметры:

values.push(this.measure.value);

или

values[this.geo.value] = this.measure.value;
...