我有2个像这样的csv文件:
csv1 = `id,grade,gpa
1,42,2
1,44,2
1,52,2
1,62,2
2,65,3
3,17,2`;
csv2 = `id,status
2,yes
1,no
3,no`;
我读了这样的csv:
d3.queue()
.defer(d3.csv, "csv1.csv")
.defer(d3.csv, "csv2.csv")
.await(function(error, data, data2) {...}
转换它们:
data.forEach(function(d) {
d.id = d.id;
d.grade = +d.grade;
d.gpa = + d.gpa;
});
data2.forEach(function(d) {
d.id = d.id;
d.status = d.status;
});
我想添加值" status"根据id ...从第二个csv到第一个csv
类似这样的事情
[{
"id": "1",
"grade": "42",
"status": "no"
},
{
"id": "1",
"grade": "44",
"status": "no"
},....]
要做到这一点,我尝试这样的事情,但我收到以下错误消息
data1.forEach(function(d) {
var obj = data2.find(function(e) {
return d.id === e.id
});
d.status = obj.status;
});
未捕获的TypeError:无法读取属性'状态'未定义的
知道为什么吗?
答案 0 :(得分:1)
您的问题是没有检查,是否在data2中找到了obj。请尝试以下操作:
data1.forEach(function(d) {
var obj = data2.find(function(e) {
return d.id === e.id
});
if(obj)
d.status = obj.status;
});