If statement d3.js函数,用于统计属于类别且大于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文件加载数据 [ {

我正在尝试创建一个函数来统计每个类别中值大于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文件加载数据

 [
  {
    "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){…})