我想使用d3.js创建一张欧洲地图。 这是我的一段代码:
(function() {
covData = [];
// code...
var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];
promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));
Promise.all(promises)
.then(makeMap)
.catch(function(err) {
console.log('Error loading files!');
throw err;
});
function makeMap(data) {
var nuts0 = data[0];
var nuts2 = data[1];
var cov = data[2];
console.log('cov:', cov);
// code ...
covData = d3.nest()
.key(function(d) {
return d.YEAR;
})
.key(function(d) {
return d.ANTIGEN;
})
.object(cov);
console.log('covData:', covData);
}
// other code...
})(); // end file function
在浏览器上我收到此错误:
cov: Array [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
Error loading files!
TypeError: covData[yearSelected] is undefined
这是一个更完整的代码:http://plnkr.co/edit/8wJvay0FyAv6CtNo1Quh
加载文件时问题在哪里?
答案 0 :(得分:2)
尝试将订单更改为您的代码。我的意思是:
(function() {
covData = [];
// code...
var files = ['nuts0.json', 'nuts2.json', 'data.csv'];
var promises = [];
promises.push(d3.json(files[0]));
promises.push(d3.json(files[1]));
promises.push(d3.csv(files[2]));
Promise.all(promises)
.then(makeMap)
.catch(function(err) {
console.log('Error loading files!');
throw err;
});
function makeMap(data) {
var nuts0 = data[0];
var nuts2 = data[1];
var cov = data[2];
console.log('cov:', cov);
covData = d3.nest()
.key(function(d) {
return d.YEAR;
})
.key(function(d) {
return d.ANTIGEN;
})
.object(cov);
console.log('covData:', covData);
// code ...
}
// other code...
})(); // end file function
在你的plunker中,console.log(cov)
关于嵌套的代码之间有很多代码。
将代码放在console.log(cov)
下面的嵌套上,然后就可以了。