如何在d3.js中获取json文件中具有特定值的行总数

时间:2015-04-02 21:29:09

标签: javascript d3.js

我有一个JSON文件,我使用d3.js进行可视化。我想得到特定代码的总行数。我正在使用以下内容:

data.keys(d.code).length

但它不起作用。我怎么解决这个问题? 我找到了一个想法,但它没有显示正确的值。怎么回事呢?

Object.keys(d.code).length

我有一个包含以下示例数据的JSON文件

[
{"name":"a","code":20},
{"name":"b","code":20},
{"name":"c","code":20},
{"name":"d","code":21}

]

我的目标是获取具有相同代码的数据计数。例如,对于代码20,我应该得到3作为输出。

3 个答案:

答案 0 :(得分:1)

您也可以使用d3.nest()根据code对数据进行分组,并让它返回每个群组的条目数:

var json = [
    {"name":"a","code":20},
    {"name":"b","code":20},
    {"name":"c","code":20},
    {"name":"d","code":21}
];

var nest = d3.nest()
  .key(function(d) { return d.code; })
  .rollup(function(values) { return values.length; })
  .entries(json);

答案 1 :(得分:0)

var count = 0;
var length = data.length;

for (var x = 0; x < length; x++)
{
    if (data[x].code == 20)
        count++;
}

console.log('Final count: ' + count);

可能就是这样。

如果你想要一个功能你可以使用它:

var getCount = function(data, val)
{
    var count = 0;
    var length = data.length;

    for (var x = 0; x < length; x++)
    {
        if (data[x].code == val)
            count++;
    }

    return count;
}

然后这样称呼:

var count = getCount(data, 20); // should return 3

答案 2 :(得分:0)

你不需要D3.js。简单的JavaScript应该这样做。类似的东西:

total = data.reduce(function(count, entry) { 
    return count + (entry.code === 20 ? 1 : 0);
}, 0);

显然,您可以将其转换为函数来处理20以外的任意值。