Javascript:当访问单个元素时,对象数组返回未定义。即使其中保存了696个对象

Javascript:当访问单个元素时,对象数组返回未定义。即使其中保存了696个对象,javascript,arrays,csv,d3.js,Javascript,Arrays,Csv,D3.js,我是Javascript的初学者,所以如果这个问题有点明显,我已经很抱歉了。所以我的练习是在d3的帮助下保存csv文件中的信息。之后,我只想显示该数组的第一个元素 当我执行console.logeditedData时,它会在控制台中显示一个包含696个元素的数组Array696,但当我尝试执行console.logeditedData[0]时,控制台显示undefined。起初,我认为这种行为是由于同步中的冲突造成的,但在使用承诺后,我仍然得到相同的结果 常量编辑数据=[]; const or

我是Javascript的初学者,所以如果这个问题有点明显,我已经很抱歉了。所以我的练习是在d3的帮助下保存csv文件中的信息。之后,我只想显示该数组的第一个元素

当我执行console.logeditedData时,它会在控制台中显示一个包含696个元素的数组Array696,但当我尝试执行console.logeditedData[0]时,控制台显示undefined。起初,我认为这种行为是由于同步中的冲突造成的,但在使用承诺后,我仍然得到相同的结果

常量编辑数据=[]; const organizedData==>{ 返回新的PromiseSolve,拒绝=>{ d3.csvtestData.csv.thenfunctiondata{ data.map元素=>{ const dateAndTime=element.date.split; 常量数据块={ 日期:dateAndTime[0], 时间:dateAndTime[1], testInfo:element.info1, TestInfo 2:element.info2, TestInfo 3:element.info3 } editedData.pushdataBlock; }; }; 决定 }; } 常量diplayData==>{ //console.logeditedData==>Array696 //console.logeditedData==>未定义 console.logeditedData[0]; } organizeData.Then显示数据 Promise.resolve必须具有结果值

const editedData = [];

const organizedData = () => {
  return new Promise((resolve, reject) => {
    d3.csv("testData.csv").then(function(data){
      data.map( element => {
        const dateAndTime = element.date.split(" ");
        const dataBlock = {
          date: dateAndTime[0],
          time: dateAndTime[1],
          testInfo: element.info1,
          testInfo2: element.info2,
          testInfo3: element.info3
        }
        editedData.push(dataBlock);
      });
    });
    resolve(editedData);
  });
}

您需要在d3.csv函数中调用resolve。。在data.map函数

从displayData中删除括号后,您将在承诺完成之前立即调用该函数。我尝试了,但仍然未定义谢谢!这就解决了问题:我想我现在明白问题出在哪里了。如果它不在.then函数内,则链进程正在被中断,对吗?哦,我认为Problem.resolve就像是允许继续在.then函数内执行该函数。它在没有结果值的情况下工作,但是为什么我要将值放在里面?您的函数如何知道必须返回哪个值?