2012-10-16 54 views
5

时删除行说我有一个样本文件sample.csv:读取数据D3

row,col,value 
1,1,2 
1,2,3 
1,3,NA 

当D3中读取数据,你做这样的事情:

d3.csv("sample.csv", function(data) { 
    data.forEach(function(d) { 
    d.value = +d.value; 
}); 

然而,NA值+ d.value将返回NaN。我如何从我的数据中排除NaN值。即读取数据,并且只取得具有数字值的行

谢谢!

回答

6

您可以在数据调用isNaN您尝试添加它之前:

d3.csv('sample.csv', function(data) { 
    data = data.filter(function(d){ 
     if(isNaN(d.value)){ 
      return false; 
     } 
     d.value = parseInt(d.value, 10); 
     return true; 
    }); 
}); 

这里假设你的号码都将是基10的整数。

+0

感谢您的回答。但是,如果值不是数字,我不想保留该行。我只想要非NaN值的行。你的解决方案将保持行,但用一个空字符串替换数字值 – by0

+0

啊,在这种情况下,你会想使用'.filter'而不是'.forEach'。我会编辑我的答案。 – JasonWyatt