我有一个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作为输出。
答案 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以外的任意值。