我有一些代码:
var cdata = [];
d3.text("tests.info", function(text) {
var data = d3.csv.parseRows(text);
data.forEach(function(d) {
cdata.push({key: d[0],values: []}
);
});
});
它读入一个 CSV 文件,然后循环遍历这些行,然后再将它们添加到数组中。我已经使用日志来查看数据是否已正确添加,所以这很好。
问题是,如果我之后尝试访问该数组,它是空的,就好像从未添加过数据一样(尽管我知道这不是真的)。
我认为这与范围界定有关,但我认为无论如何 push()
都应该以这种方式工作。
最佳答案
尝试将 console.log
放在超时函数内,或者放置一个显示 cdata 内容的按钮,您会发现它不是空的。正如 Pointy 所说,发生的事情是:
你声明cdata
您开始加载
test.info
你展示cdata的内容
test.info
已加载,您开始循环并将数据放入数组
关于javascript - 为什么 push() 在循环中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081834/