javascript - 为什么 push() 在循环中不起作用?

标签 javascript arrays d3.js dynamic-arrays

我有一些代码:

  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/

相关文章:

javascript - 如何将对象数组转换为数组

javascript - 如果耳机刚拔出,如何在浏览器中检查?

javascript - 我如何完成这个按钮阵列以使其工作?

d3.js - 在绘制文本之前计算文本的宽度

javascript - 仅打印 ng-repeat 内的唯一值

javascript - 无法访问 JSON 数组中的元素

Python:从 n 维数组中定义的离散分布中抽样

javascript - 如何使用变换属性更改圆形 svg 元素的位置?

javascript - D3.js 在图表之间转换

javascript - .queue() 和 jquery.queue() 之间的区别