Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 把NaN变成一个数字_Javascript_D3.js - Fatal编程技术网

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(',', ''));