数组没有正常输出


let test = [];
d3.csv("cgvList.csv", function (data) { 
if (data.poi_nm == "CGV") { 
let obj = {};
obj.content = '<div>' + data.branch_nm + '</div>';
test.push(obj); 
}
});
console.log(test);
console.log("test[0] : " + test[0]);
console.log("test.length : " + test.length);
[enter image description here][1]

我把csv文件变成了一个对象数组。

作为输出数组的结果,数组输出良好,在这里输入图像描述但是当输出索引0时,输出的是undefined数组的长度也是0。
从控制台打印时打印正确。

有什么问题吗?

输入图片描述

没有jsfiddle或沙盒来玩,我不能确切地告诉发生了什么,但我相信正在发生的是两件事的混合:

  1. d3.csv是一个异步函数,因此返回一个promise。
  2. 传递给d3.csv的函数应该告诉函数如何解析csv中的每个元素,并且应该返回解析过的对象,而不是将其添加到外部数组或类似的东西。函数中返回的每个元素都是结果数组
  3. 中的一个元素

有(至少)两种可能的方法可以处理这个问题:

  1. await异步函数,它的返回值将是您需要的值,类似于
const test = await d3.csv("cgvList.csv", function (data) { 
if (data.poi_nm == "CGV") { 
let obj = {};
obj.content = '<div>' + data.branch_nm + '</div>';
return obj; 
}
});
console.log(test);
console.log("test[0] : " + test[0]);
console.log("test.length : " + test.length);

注意,这里传递给d3.csv的函数以您想要格式化的方式返回对象!

  1. .then语句中执行逻辑,该语句也等待承诺被实现:
d3.csv("cgvList.csv", function (data) { 
if (data.poi_nm == "CGV") { 
let obj = {};
obj.content = '<div>' + data.branch_nm + '</div>';
return obj; 
}
}).then((test) => {
console.log(test);
console.log("test[0] : " + test[0]);
console.log("test.length : " + test.length);
});

相关内容

  • 没有找到相关文章

最新更新