将值从一个csv添加到另一个csv

时间:2018-06-06 17:01:40

标签: javascript csv d3.js

我有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:无法读取属性'状态'未定义的

知道为什么吗?

1 个答案:

答案 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;
});