javascript - 如何将 JavaScript 对象传递给另一个函数?
问题描述
我正在从 AWS S3 存储桶下载 csv 文件,以便可以在 D3 中使用它。
下载csv文件没问题。在下面的代码中,console.log(data.Body.toString())
以预期格式打印出 csv 文件内容
但是,我不确定如何在下面的代码中将下载的 csv 文件内容传递给 D3。
文件内容已经是不错的 csv 文件格式。
问题:如何merged.csv
用对象替换下面mergedcsv
?
<script type="text/javascript">
var bucket = new AWS.S3();
bucket.getObject({
Bucket: 's3-google-analytics',
Key: 'merged.csv'
},
function awsDataFile(error, data) {
if (error) {
return console.log(error);
}
mergedcsv = data.Body.toString();
console.log(data.Body.toString());
}
);
// how to replace the "merged.csv" below with the mergedcsv object above?
d3.csv("merged.csv", function(data) {
var parseDate = d3.time.format("%Y%m%d").parse;
var counter = 0;
data.forEach(function(d) {
etc
});
});
</script>
更新以添加mergedcsv
内容示例,例如console.log(mergedcsv);
or的输出console.log(data.Body.toString());
:
yyyymm,date,hostname,source,PPCC,in30days,sessionDuration,users,sessions,newUsers,twitterSessions,bounceRate,sessionsPerUser
201203,20120330,journal,google,PPCC,>30days,26.25,4,4,4,0,75.0,1.0
201203,20120331,journal,(direct),PPCC,>30days,0.0,3,3,3,0,100.0,1.0
201203,20120331,journal,bing,PPCC,>30days,0.0,1,1,1,0,100.0,1.0
解决方案
在阅读 d3.csv 上的文档后,它会从 URL 加载一个 CSV 文件,但在您的示例中,您已经加载了数据,您只需要解析它。所以 d3.csv 不会有任何用处。
看起来用于解析的 D3 函数d3.csv.parse(data)
将返回一个已解析数据的数组。(文档在这里)
所以你可以做类似的事情......</p>
var bucket = new AWS.S3();
var mergedcsv;
bucket.getObject({
Bucket: 's3-google-analytics',
Key: 'merged.csv'
},
function awsDataFile(error, data) {
if (error) {
return console.log(error);
}
mergedcsv = d3.csv.parse(data.Body.toString());
// now mergedcsv will be an array, so you can do whatever you were going to do with it before, i.e...
var parseDate = d3.time.format("%Y%m%d").parse;
var counter = 0;
data.forEach(function(d) {
etc
});
}
);
推荐阅读
- android - 使用动态路径的 Firestore 查询
- flutter - 在颤动的蜂巢中按日期检索数据
- python - Kivy + 后端通信
- emacs - 使用 Prelude 初始化的 emacs 25.2 启动期间的文件错误“https://melpa.org/packages/archive-contents”“错误请求”
- c++ - 类的构造函数中的异常会导致内存泄漏吗?
- questdb - QuestDb docker 撰写图像
- python - 在电子邮件中附加 django 生成的 pdf
- python - Spyder 5 无法在 Windows 10 上启动
- reactjs - setState 方法不会覆盖 ReactJS 中数据模型变量的值
- python - AWS EC2 中的 docker-compose DNS