Javascript 把NaN变成一个数字
我正在导入这样的数据集:Javascript 把NaN变成一个数字,javascript,d3.js,Javascript,D3.js,我正在导入这样的数据集: Year,Spain,Rest 2017,"1,688","5,787" 2016,"1,787","5,505" 2015,"1,826","5,187" 2014,"1,822","4,861" 我需要把这些数字转换成数字,显示在D3图形中。我曾尝试使用这两个版本的代码来实现这一点,但我仍然得到了NaN作为答案,因此我不知道如何修复此问题: d3.csv("stores.csv", function(d, i, columns) { for (i = 1, t
Year,Spain,Rest
2017,"1,688","5,787"
2016,"1,787","5,505"
2015,"1,826","5,187"
2014,"1,822","4,861"
我需要把这些数字转换成数字,显示在D3图形中。我曾尝试使用这两个版本的代码来实现这一点,但我仍然得到了NaN作为答案,因此我不知道如何修复此问题:
d3.csv("stores.csv", function(d, i, columns) {
for (i = 1, t = 0; i < columns.length; ++i) {
t += d[columns[i]] = +d[columns[i]];
}
d.total = t;
return d;
}, function(error, data) {
if (error) throw error;
console.log(data);
var keys = data.columns.slice(1);
data.forEach(function(d) {
d.Year = parseDate(d.Year);
d["Spain"]= +(d["Spain"]);
d["Rest"] = +d["Rest"];
d["total"] = +d["total"];
// ...
但它仍然不起作用
希望有人能帮我解决这个问题。在解析之前,您需要从值中删除
,
d["Spain"]= Number(d["Spain"].replace(',', ''));
谢谢关于您的解决方案,我要提到的另一件事是,它假定逗号分隔千而不是小数。一些本地化知识在这里会很有帮助……根据数据的来源,可能实际上意味着
是的,逗号分隔的是千而不是小数。我尝试过这个解决方案,但它说:“Typerror:d.sipani.replace不是一个函数”。@MichaelRo这意味着您需要查看D3文档,如何获取数据。如果数据检索正确,并且只有解析问题,则解决方案是正确的。console.log(d[“西班牙”])
的结果是什么?试着把你的问题扩大一点。不过有一件事:我认为您不想使用parseInt(字符串,基数)
,因为parseInt(“4861”,10)
返回4
。也许您需要console.log(d[“西班牙”])的结果是NaN。好的,所以在使用forEach
-函数之前,它会出错。尝试正确缩进并使用更好的变量名。这对调试非常有帮助。当你这么做的时候,我建议你改变你的问题和代码布局,这样别人会更容易理解。另外,在带有d.Year…
@epascarello的行之前执行console.log(d)
,我认为这不是重复的。你能取消标记以便我发布解决方案吗?谢谢
d["Spain"]= Number(d["Spain"].replace(',', ''));