If statement d3.js函数,用于统计属于类别且大于0的数据
我正在尝试创建一个函数来统计每个类别中值大于0的人。如果这是我的数据If statement d3.js函数,用于统计属于类别且大于0的数据,if-statement,for-loop,d3.js,count,If Statement,For Loop,D3.js,Count,我正在尝试创建一个函数来统计每个类别中值大于0的人。如果这是我的数据 DATA.CSV name; category; value name1; A; 10 name2; A; 0 name3; A; 5 name4; B; 7 name5; B; 3 name6; C; 0 …我应该得到以下结果 count(dataset, "A")=2 count(dataset, "B")=2 count(dataset, "C")=0 编辑!我实际上是从一个.json文件加载数据 [ {
DATA.CSV
name; category; value
name1; A; 10
name2; A; 0
name3; A; 5
name4; B; 7
name5; B; 3
name6; C; 0
…我应该得到以下结果
count(dataset, "A")=2
count(dataset, "B")=2
count(dataset, "C")=0
编辑!我实际上是从一个.json文件加载数据
[
{
"voce":"amministrazione",
"categoria":"funzioni",
"val2015":404571081
},
{
"voce":"sociale",
"categoria":"funzioni",
"val2015":235251679
},
{
"voce":"territorio e ambiente",
"categoria":"funzioni",
"val2015":286164667
},
{
"voce":"viabilità e trasporti ",
"categoria":"funzioni",
"val2015":144185664
},
{
"voce":"istruzione",
"categoria":"funzioni",
"val2015":168774925
},
{
"voce":"cultura ",
"categoria":"funzioni",
"val2015":55868045
},
{
"voce":"sport",
"categoria":"funzioni",
"val2015":27219432
},
{
"voce":"turismo",
"categoria":"funzioni",
"val2015":9544845
},
{
"voce":"sviluppo economico",
"categoria":"funzioni",
"val2015":14790363
},
{
"voce":"servizi produttivi",
"categoria":"funzioni",
"val2015":4334
},
{
"voce":"polizia locale",
"categoria":"funzioni",
"val2015":99007202
},
{
"voce":"giustizia ",
"categoria":"funzioni",
"val2015":12147068
},
{
"voce":"anticipazioni di cassa",
"categoria":"rimborso prestiti",
"val2015":304323808
},
{
"voce":"finanziamenti a breve termine",
"categoria":"rimborso prestiti",
"val2015":0
},
{
"voce":"prestiti obbligazionari",
"categoria":"rimborso prestiti",
"val2015":38842996
},
{
"voce":"quota capitale di debiti pluriennali",
"categoria":"rimborso prestiti",
"val2015":0
},
{
"voce":"quota capitale di mutui e prestiti",
"categoria":"rimborso prestiti",
"val2015":128508755
},
{
"voce":"spese per conto terzi",
"categoria":"",
"val2015":232661261
},
{
"voce":"disavanzo di amministrazione",
"categoria":"",
"val2015":0
}
]
我尝试了一个内部带有if语句的for循环,但它不起作用
function count (dataset, chosenCategory) {
var count = 0;
for (d in dataset) {
if (d.categoria==chosenCategory && d.val2015>0) {
count += 1;
} else {
count += 0;
}
}
}
我做错了什么?您是否尝试过将“d.value”更改为“+d.value”
如果它们来自csv文件,则值通常作为字符串加载,因此所有要作为数字处理的内容都需要转换为数字,“+”就可以实现这一点
在你的控制台上试试
"1">0
false
+"1">0
true
另外,您不需要else条件我实际上是从.json文件加载数据。在我的问题中,我使用了csv文件,因为我认为它更容易阅读。不知道这可能会导致混乱,抱歉。。然后改变问题,即使我去掉d.value条件,循环仍然不起作用。似乎它也无法访问d.category:如果我运行循环(每次添加后都使用console.log(count))我会得到19次“0”。这是您实际的json文件吗?这看起来是意大利语,你正在测试循环中的英语等价物。是的,在我的代码中,我使用意大利语等价物。。我只是修改了措辞,使我的问题更清楚。。无论如何,即使我在控制台中测试for循环,它也不起作用(正如我在上一篇评论中所说的),因此我认为我编写它的方式有问题(尽管sintax对于我所做的其他可视化工作很好。)for..in循环将索引返回为“d”,而不是数据片段,请尝试-->dataset.forEach(函数(d){…})