javascript - 对整个 csv 列求和以使用 d3 javascript 显示总数
问题描述
我有以下本地 csv 文件:
country,population,porcentage
China,15,1.1
India,86,4.1
United States,357,15.2
Indonesia,1207,51.2
Brazil,717,29.12
我要做的是获取人口列的总值,以便将其显示在我的条形图下方。我正在使用 d3 csv 函数来处理数据,但问题是当我获取数据时,该函数将其放在单独的对象中,这不允许我将它们相加。这就是他们的样子。
我首先尝试使用reduce,但它不起作用。
import { csv, sum } from 'd3';
csv("./src/bardata.csv", (() => {
var sum;
return sum = (...args) => {
return args.reduce((a, b) => a + b, 0);
};
}))();
我也尝试过使用 map 函数,但我的理解是这只适用于数组,我的数据位于单独的对象中。无论如何,我不断收到“data.map 不是函数”错误。有什么建议么?
解决方案
您已经导入d3.sum()
了它,可以通过提供访问器函数作为第二个参数来对对象数组求和:
d3。总和(可迭代[,访问器])
返回给定可迭代数字的总和。如果iterable不包含数字,则返回0。可以指定一个可选的访问器函数,相当于在计算总和之前调用Array.from。
对于您的代码,这可能是以下几行
import { csv, sum } from 'd3';
csv("./src/bardata.csv")
.then(data => {
const total = sum(data, d => d.population);
});
推荐阅读
- bash - Bash 陷阱 SIGINT 多次不起作用
- javascript - express 中传递函数和 () => {} 的区别
- android - 自定义 AppComponentFactory 无法实例化应用程序
- matlab - 周转时间:应该比交货时间低多少?
- sql-server - 关于在 SQL Server 中发送自动批量邮件的问题
- ruby-on-rails - 如何在 Rails 中创建动态命名空间或范围路由
- python - 使用字典将变量保存在文本文件中的问题
- python - Python:如何在另一个函数中使用一个函数返回的数据框
- c++ - 在 GitHub 上创建我的 C++ 库的发布版本的正确方法是什么?
- c# - 可以使用指针来修改只读字段吗?但为什么?