【发布时间】:2018-09-13 13:34:03
【问题描述】:
我从post 中获得了影响,将 CSV 文件存储在单独的数组中,并且它可以工作。我希望再添加大约 8 个数组,每个数组都包含 CSV 文件的内容。
但是我怎样才能将这些数组合并到一个对象数组中呢? 拥有一个对象数组对于我后续应用这些数组至关重要。到目前为止我的内容如下,但我不确定它是否正确?
任何帮助将不胜感激。
var dataCSV;
var dataCSV2;
var collection = {dataCSV, dataCSV2};
d3.csv("data/csv1.csv", function(data) {
data.forEach(function(d) {
d.word = d.word;
d.frequency = +d.frequency;
})
dataCSV = data;
console.log(dataCSV);
});
d3.csv("data/csv2.csv", function(data) {
data.forEach(function(d) {
d.word = d.word;
d.frequency = +d.frequency;
})
dataCSV2 = data;
console.log(dataCSV2);
});
function merge(data1, data2) {
collection = {data1, data2};
console.log(collection);
}
merge(dataCSV, dataCSV2);
理想情况下,我希望 collection 的输出是:
collection {
dataCSV {
word: ..., frequency: ...,
word: ..., frequency: ...
},
dataCSV2 {
word: ..., frequency: ...,
word: ..., frequency: ...
}
}
【问题讨论】:
-
您一定要使用旧版本的 d3/d3-queue 吗?如果您升级到 v5,您的生活会更轻松。
-
我不知道 V5 可用...我会调查一下。在 V5 中我需要什么样的解决方案?
-
看看我的answer 到"Load multiple files using the d3-fetch module"。
d3-fetch模块替换了 v5 中现已弃用的模块d3-queue。 -
@altocumulus 这很混乱,我可能需要发布另一个问题
-
我链接到的答案中的解决方案与@OriDrori's answer提出的解决方案基本相同。但是,v5 让您的生活更轻松,因为 d3 使用 Fetch API 将自己返回 Promise,因此无需自己创建新的 Promise,即
d3.csv返回一个 Promise。这就是你在我的回答中看到的。相同的技术,只是更短。
标签: javascript arrays csv d3.js