簡體   English   中英

d3檢索csv文件在javascript控制台中返回Nan

[英]d3 retrieval of a csv file returns Nan in the javascript console

我只是在學習如何使用d3。 嘗試檢索.cvs / excel文件時遇到問題。 在第13行,我得到了控制台讀數“ 4 Nan”或“ 4 undefined,undefined”。 我的books.csv位置可能在錯誤的位置。 它與我的html文件和d3.js一起位於“ xampp \\ htdocs \\ books.csv”。行和列均為5 *2。任何問題或幫助將不勝感激!

<!DOCTYPE html>
<html>
 <head>
  <meta charset"utf-8">
   <title> D3 example</title>
   <script src="https://d3js.org/d3.v4.min.js"></script>
 </head>
 <body>

  <script>
        d3.csv("books.csv", function(myArrayOfObjects){
        myArrayOfObjects.forEach(function(d){
            console.log( d.x + ", " + d.y);
        });
    });
 </script>
  </body>
    <body>
        Is it Working?
    </body>
</html>

books.csv file contains: 
4, 2
5, 10
3, 2
1, 7
0, 11

問題只是CSV的結構:

CSV的第一行是標題 d3.csv使用該行創建對象。 因此,在給定的CSV中:

foo, bar
42, 12

d3.csv將創建以下數據:

[{"foo": 42, "bar": 12}]

現在,您的CSV文件具有數字作為標題,而dxdy根本無法使用。 Javascript允許您將對象鍵命名為數字( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types ),但是在這種情況下,您必須使用方括號符號來引用它:

console.log( d["4"] + ", " + d["2"]);

標頭分別是42

話雖如此,這是另一種CSV:

x,y
4, 2
5, 10
3, 2
1, 7
0, 11

現在, xy是標題。

我創建了一個插件給您看區別: https ://plnkr.co/edit/OipJg11P3aEvwgQ35xbh?p=preview

您的CSV是“ wrongData.csv”,而我的是“ rightData.csv”。 檢查控制台。

注意 :雖然我建議您確實將列標題添加到CSV文件中,但是如果您不願意或不能這樣做,請繼續閱讀。

通過使用dsv .parseRows更改d3.csv的默認解析功能, 可以解析不包含標題的CSV文件。

與dsv.parse不同,此方法將標題行視為標准行,並且應在DSV內容不包含標題時使用。

您可以按照d3.csv上的文檔進行操作 ,特別是

可以通過在返回的實例上調用request.row來更改行轉換函數。

我使用以下方法分叉了接受的答案:

d3.request("wrongData.csv") .mimeType("text/csv") .response(xhr => d3.csvParseRows(xhr.responseText, d => d)) .get(data => console.log(data));

編輯:這是一個工作正常的監聽器https://plnkr.co/edit/hD8NiyIpIM8MEummDVxG?p=preview

我遇到了同樣的問題,我的csv文件如下所示:

Name,Value 
Dan, 31
Matt, 33
Mike, 29

要解決NAN問題,我必須用引號將字符串包裝起來:

"Name", "Value"
"Dan", 31
"Matt", 33
"Mike", 29

這解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM