【发布时间】:2016-12-04 11:30:28
【问题描述】:
我正在尝试从 D3 中的数组中过滤掉一些属性。该数组包含 csv 文件的值。
对于这样的小型 csv 文件,这一切都很好:
d3.csv("foods.csv", function(data) {
data.forEach(function(v){ delete v.name });
data.forEach(function(v){ delete v.created_at });
});
这是第一个数组的样子:
但是当我尝试为更大的 csv 文件执行此操作时,我收到一条错误消息:“devtools 已与页面断开连接。一旦重新加载页面,devtools 将自动重新连接”。 这就是第二个数组的样子。
为什么这不适用于第二个数组?数组是否太大,或者我应该尝试递归处理这些值,因为我已经尝试过这样做:
function deleteCitation(v) {
if(Object.prototype.toString.call(v) === '[object Array]' ) {
v.forEach(deleteCitation);
}
else {
delete v.citation;
}
}
d3.csv("compounds_foods.csv", function(data) {
data.forEach(deleteCitation);
print(data);
});
【问题讨论】:
-
哇,在客户端加载一个包含 740k+ 个项目的数组看起来有点太多了,您确定需要所有这些数据点吗?不能先在服务器端进行某种预聚合吗?
标签: javascript arrays csv d3.js