我有一个名为“plotData”的数据数组,它由任意数量的数据“行”组成,这些数据只是 4 元素数组。数组“plotData”使用 $.post() 脚本附加到代码中的几行中。 “...”是加载 post 请求中显示的一些变量的位置。
console.log("plotData (before update): ", plotData);
console.log("plotData length: ", plotData.length);
...
...
...
$.post(
"/csvgen",
{node_num: nodes.toString(), start_time: startTime.toString(), end_time: endTime.toString()},
function(data){
var nodeData = $.csv.toArrays(data);
nodeData.forEach(function(element){
plotData.push(element);
});
},
"text"
);
我正在控制台中记录数组和 array.length,相信这两个方法调用应该按顺序执行。当我查看控制台输出时,数组的控制台日志显示有 28 个条目,但plotData.length的控制台日志是14。随着数组被附加,结果发现plotData的实际长度是始终比plotData.length控制台输出大14。
“plotData”数组在此代码之外读取,但未修改。
这是什么原因?
编辑以添加日志
Can't plot empty data set
TypeError: Cannot read property 'length' of undefined(…)
plotData (before update): []
plotData length: 0
plotData (before update): [Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4]]
plotData length: 14
plotData (before update): [Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4]]
plotData length: 28
plotData (before update): [Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4], Array[4]]
plotData length: 50
第一个错误是 b/c 当我实例化绘图时数据集为空。
最佳答案
您的代码在调用 post()
之前记录。尝试将日志记录语句添加到回调函数的末尾 - 它们应该显示“正确”的值(在附加新行之后)。
关于JavaScript 数组长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620524/