gpt4 book ai didi

javascript - d3.js 读取数据集时出现问题

转载 作者:行者123 更新时间:2023-12-02 15:27:09 25 4
gpt4 key购买 nike

我已经尝试解决这个错误 2 天了,现在不知道如何解决这个问题。我在尝试将数据添加到可视化时收到此错误白色

未捕获类型错误:无法读取未定义的属性“长度”

这似乎与数据集有关。但无论我做什么,如果我在 checkit 函数之外 console.log 数据集(见下文),我都会收到此错误,它返回未定义。

数据

[ {
"Continent":"Asia.Oceania",
"Country_Names":"Viet Nam",
"Total":142.9
},
{
"Continent":"Asia.Oceania",
"Country_Names":"Yemen",
"Total":20
},
{
"Continent":"Misc",
"Country_Names":"World marine bunkers",
"Total":602.2
},
{
"Continent":"Misc",
"Country_Names":"World aviation bunkers",
"Total":477.8
}
]

代码

var svg_0 = d3.xml("drawing.svg", "image/svg+xml", function(xml) {
var importedNode = document.importNode(xml.documentElement, true);
d3.select("#viz").node().appendChild(importedNode);



var dataset;

function checkIt(data){
for (var i in data) {
var data_clean;
data_clean = data[i].Total
dataset = data_clean
console.log(dataset) //returns data
}

}
console.log(dataset)//returns undefined


d3.json("data.json", checkIt);


var svg = d3.select("#level_0")
.selectAll("path")
.data(dataset)
.enter()
});

最佳答案

d3.json("data.json", checkIt); 是异步操作 ( check syntax here for example )。简而言之,这意味着在代码执行的某个时刻,dataset 变量实际上是尚未定义。然后,稍后它被定义,但为时已晚。

这意味着您需要确保在开始使用数据集时已定义该数据集。例如,您可以将使用转移到 checkIt 回调,如下所示:

  var dataset;
function checkIt(data){
var data_clean = []; //prepared variable for clear data
for (var i in data) {
data_clean.push(data[i].Total);
}
//move initialisation here, to be sure dataset is there
var svg = d3.select("#level_0")
.selectAll("path")
.data(data_clean);
}
//other code here...
d3.json("data.json", checkIt);
//other code here...

关于javascript - d3.js 读取数据集时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com