为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 D3.csv() 方法返回“未定义”

为什么我的 D3.csv() 方法返回“未定义”

富国沪深 2023-03-03 10:11:41
我只有一个 csv 文件,我正在尝试使用异步函数获取数据,但未定义。<script>    async function data(pathToCsv) {        return await d3.csv(pathToCsv, function (data) {            data.year = +data.year            data.running_total = +data.running_total            data.date = new Date(data.year, 0)            return data        })    };    let dataset = data('q3.csv');    console.log(dataset.year);</script>
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

这里的问题是你的数据函数正在返回一个承诺,所以year从一个承诺对象访问将返回undefined,你需要await在调用你的时添加data function


 async function data(pathToCsv) {

        return await d3.csv(pathToCsv, function (data) {

            data.year = +data.year

            data.running_total = +data.running_total

            data.date = new Date(data.year, 0)

            return data

        })

   };


  async function init() {

     let dataset = await data('q3.csv');

     // this should work now assuming you are using d3 function correctly as i'm not aware of d3 functions myself

     console.log(dataset.year); 

  }


  init()


查看完整回答
反对 回复 2023-03-03
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我解决了。


<script>


    async function data(pathToCsv) {

        let dataset = await d3.csv(pathToCsv, function (d) {

            d.year = +d.year

            d.running_total = +d.running_total

            d.date = new Date(d.year, 0)

            return d

        })

        return dataset

    };


    data('q3.csv').then(function(d) {

        d.forEach(function(p){

            console.log(p.date.getFullYear());

        })

    });


</script>


查看完整回答
反对 回复 2023-03-03
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信