javascript - d3.js 如何获取对象数组数据的总和?

标签 javascript arrays d3.js

我有 csv 文件

DATE OF ARREST, ARREST RESOLUTION, COUNT
01/01/1988, BONDED OUT, 1
01/01/1988, BONDED OUT, 1
01/01/1988, BONDED OUT, 1
02/01/1988, BONDED OUT, 1
02/01/1988, BONDED OUT, 1

我想用上面的数据创建一个图 TableView 。为此,我必须对每个日期求和“COUNT”。例如,我需要有 01/01/1988,BONDED OUT,3 ...在这一天我有 3 个案例。解析我使用的日期

var parseDate = d3.timeParse("%m/%d/%Y");

 data.forEach(
  function(d){
  d.count = +d["COUNT"];
  d.date = parseDate(d["DATE OF ARREST"]);
})

图表正确显示了年份,但案例数始终为 1。如何计算每年的“COUNT”个数?

最佳答案

如果我理解正确的话,您希望转换数据并对同一天的所有 COUNT 进行求和。您可以使用d3.nest来做到这一点.

var dataAsCsv = `DATE OF ARREST,ARREST RESOLUTION,COUNT
01/01/1988,BONDED OUT,1
01/01/1988,BONDED OUT,1
01/01/1988,BONDED OUT,1
02/01/1988,BONDED OUT,1
02/01/1988,BONDED OUT,1`;

var data = d3.csvParse(dataAsCsv);

var parseDate = d3.timeParse("%m/%d/%Y");

var convertedData = d3.nest()
  .key(function(d) { return d["DATE OF ARREST"]; })
  .rollup(function(v) {
      return {
        date: parseDate(v[0]["DATE OF ARREST"]),
        count: d3.sum(v, function(d) { return +d["COUNT"]; })
      }
  })
  .entries(data).map(function(d) { return d.value});

console.log(convertedData);
<script src="https://d3js.org/d3.v4.min.js"></script>

关于javascript - d3.js 如何获取对象数组数据的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989638/

相关文章:

javascript - 使用 Joi,如何将 .or 用于递归对象

javascript - 如何在刷新时清除 props.location.state?

d3.js - 如何增加轴和轴标签之间的间距?

javascript - 为什么 push() 在循环中不起作用?

javascript - 强制移动设备激活 :hover CSS properties on first touch and activate link on second touch

javascript - 如何将时间戳转换为日期字符串?

javascript:从第二个数组中的数组中删除值

javascript - 使用 array.includes() 检查数组中是否有超过 2 个内容

javascript - 通过另一个数组(长度较短)对关联 JavaScript 数组进行排序的最有效方法?

d3.js - .exit().remove() 组元素不起作用