执行以下代码时,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);
});
答案 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;