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

Javascript 为什么我的D3.csv()方法正在返回;“未定义”;,javascript,d3.js,Javascript,D3.js,我只有一个csv文件,我试图用一个异步函数获取数据,但是我没有定义 <script> async function data(pathToCsv) { return await d3.csv(pathToCsv, function (data) { data.year = +data.year data.running_total = +data.running_total data.da

我只有一个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>

异步函数数据(pathToCsv){
return wait d3.csv(路径、函数(数据){
data.year=+data.year
data.running_total=+data.running_total
data.date=新日期(data.year,0)
返回数据
})
};
让数据集=数据('q3.csv');
console.log(dataset.year);

这里的问题是,您的数据函数正在返回承诺,因此从承诺对象访问
year
将返回
未定义的
,您需要在调用
数据函数时添加
等待

 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()
我解决了

<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>

异步函数数据(pathToCsv){
让dataset=wait d3.csv(pathToCsv,函数(d){
d、 年份=+d.year
d、 运行总数=+d.运行总数
d、 日期=新日期(d.年,0)
返回d
})
返回数据集
};
数据('q3.csv')。然后(函数(d){
d、 forEach(函数(p){
log(p.date.getFullYear());
})
});

看看这篇未定义的文章still@RaminMelikov然后,csv确实返回解析为未定义的承诺,或者您正在访问的数据不正确,总之,在快速搜索之后,我觉得csv函数确实返回了一个数组,因此您可能希望尝试dataset[0]。year。这两种情况都使用console.log(dataset)进行sart,并查看发生了什么。如果您使用codesandbox或类似的方法设置一个可复制的示例,我可以为您提供更多帮助