为什么数组未定义?

时间:2011-06-16 08:55:48

标签: javascript jquery arrays undefined

执行以下代码时,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 个答案:

答案 0 :(得分:3)

值[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(...)

答案 1 :(得分:2)

push是Array对象本身的一个方法 - 你在Array中的一个值上调用它(可能没有设置,因此'undefined')。目前还不清楚this.geo.value是什么,但假设它是您尝试设置的数组项的索引,您的选项是:

values.push(this.measure.value);

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