如果这是一个愚蠢的问题,我想原谅自己,但我无法弄清楚这里出了什么问题。我是d3的新手,说实话Javascript是一个整体。我有一个json文件,如下所示:
[{"plaats":"AMSTERDAM","geboortejaar":1990,"vooropleiding":"MBO"}, {"plaats":"GENK","geboortejaar":1987,"vooropleiding":"HAVO"}, {"plaats":"JOPPE","geboortejaar":1992,"vooropleiding":"VWO"}]
我试图弄清楚我的JSON文件中出现“HAVO”,“MBO”和“VWO”值的频率。为此,我编写了以下代码:
var svgHeight = 400;
var svgWidth = 400;
var svg = d3.select("#pieChart")
.append("svg")
.attr("height", svgHeight)
.attr("width", svgWidth);
d3.json("propedeuse.json", function (error, json) {
alert("Hello, " + json[2]);
var VWO = 0,
HAVO = 0,
MBO = 0;
for (var i = 0; i <= json.length; i++) {
if (json[i].vooropleiding == "VWO") {
VWO++;
}
else if (json[i].vooropleiding == "HAVO") {
HAVO++;
}
else {
MBO++;
}
}
svg.append("p")
.text(HAVO);
console.log("MBO: " + HAVO);
console.log("HAVO: " + HAVO);
console.log("VWO: " + VWO);
});
我收到提醒,“你好,[对象对象]”。但根据我的控制台json [i]未定义。为什么突然之间没有定义,而它的警报工作得非常好?
我需要发生的事情(在此示例中)是控制台为每个值记录1。
答案 0 :(得分:1)
您的问题似乎与d3无关。这真的只是一个javascript问题。这将返回具有所需计数的对象:
var json = [{"plaats":"AMSTERDAM","geboortejaar":1990,"vooropleiding":"MBO"}, {"plaats":"GENK","geboortejaar":1987,"vooropleiding":"HAVO"}, {"plaats":"JOPPE","geboortejaar":1992,"vooropleiding":"VWO"}];
var answer = json.reduce(function(prev, cur) {
var val = cur["vooropleiding"];
prev[val] = (prev[val] || 0) + 1;
return prev;
}, {});
答案 1 :(得分:1)
var data = [{"plaats":"AMSTERDAM","geboortejaar":1990,"vooropleiding":"MBO"}, {"plaats":"GENK","geboortejaar":1987,"vooropleiding":"HAVO"}, {"plaats":"JOPPE","geboortejaar":1992,"vooropleiding":"VWO"}];
// Inside d3.json, your "json" variable is equivalent to this "data"
var vwo = data.filter(function(d) { return d.vooropleiding === "VWO"; }).length,
havo = data.filter(function(d) { return d.vooropleiding === "HAVO"; }).length,
mbo = data.filter(function(d) { return d.vooropleiding === "MBO"; }).length;
document.getElementById("vwo").innerText = vwo;
document.getElementById("havo").innerText = havo;
document.getElementById("mbo").innerText = mbo;
我同意@Jonah。这只是一个JavaScript问题。这是另一种方法。