Web 交互式数据可视化第 5 章有关将字符串转换为浮点数的问题

问题描述 投票:0回答:1

我正在阅读《Web 交互式数据可视化》一书自学如何使用 D3(使用 D3 的第 5 版),但我无法理解我做错了什么,这是第 76 页。

有一个非常简单的 .csv 文件 (food.csv),其中包含两列,一列标题为“食物”,另一列标题为“美味”。我使用以下代码将文件加载到 D3 中:

<!DOCTYPE html>
<html lang = "en">
    <head>
            <meta charset="utf-8">
            <title>Loading csv File</title>
            <script type="text/javascript" src="d3.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            d3.csv("food.csv",function(data){
                console.log(data);
            });
        </script>
    </body>
</html>

由于 Deliciousness 值作为字符串加载,因此本书定义了一个将字符串转换为浮点数的函数,以下是其代码:

<!DOCTYPE html>
<html lang = "en">
    <head>
            <meta charset="utf-8">
            <title>Loading Data and Converting Data Type</title>
            <script type="text/javascript" src="d3.js"></script>
    </head>
    <body>
        <script type="text/javascript">

            var rowConverter = function(d){
                return {
                    Food: d.Food,
                    Deliciousness: parseFloat(d.Deliciousness)
                };
            }

            d3.csv("food.csv", rowConverter, function(data){
                console.log(data);
            });

        </script>
    </body>
</html>

当我这样做时,美味值的数据类型没有改变。我错过了一些非常简单的事情吗?

我查看了 parseFloat 的文档,这似乎不是问题。我想知道我是否只是误解了 rowConverter 函数应该在哪里定义。

我没有太多的 html 或 JavaScript 编码经验,所以这可能是问题所在。

javascript html d3.js
1个回答
0
投票

d3 使用 fetch 所以正确的语法是:

var rowConverter = function (d) {
  return {
    Food: d.Food,
    Deliciousness: parseFloat(d.Deliciousness),
  };
};

d3.csv('food.csv', rowConverter).then((d) => {
  console.log(d);
});
© www.soinside.com 2019 - 2024. All rights reserved.