当我尝试重置数组时,我遇到了一些非常奇怪的行为;例如:
data.length=0;
其中数据是一个数组。我将尝试仅在此处包含相关代码,但基本上我正在做的是在我的程序的每次迭代中,我用更新的值填充数组,然后在另一个函数中使用该数组。但是当我重置数组时,该函数似乎在第一次迭代时获得了值,但之后没有。
但是,当我不重置数组时,函数会获取值,但也会获取旧值。我不想要这个,因为我只想要新的更新值。这是一个代码片段:
var buffer = [['1',[0]],['2',[0]],['3',[0]],['4',[0]]];
var dataset = [];
ws.onmessage = function(evt){
dataset.length=0;
var distances = JSON.parse(evt.data);
console.log(distances);
for(var i=0; i<buffer.length; i++) {
if(buffer[i][0] == distances.miles) {
buffer[i][1][0]++;
}
//console.log(buffer);
dataset.push(buffer[i][1][0]);
draw();
//console.log(dataset);
}
}
该函数使用数据集数组重绘图表。
我试图在这里保持简单,但完整的功能在这里。
我真的不知道是什么导致了这种意外行为。
编辑:
console.log(dataset) 显示新的更新值,但不知何故 dataset.length=0; 正在阻止 draw() 函数使用更新的数组。由于无需重置数组,draw() 函数就可以使用数组。
编辑:
我试图不重置数组,而是获取最后 4 个元素并将它们放入一个新数组中,然后将它们发送到 draw(),但仍然是相同的奇怪行为:
x = dataset.slice(-4);
console.log(x);
draw();
但是,如果我不这样做或不清除数组,那么 draw() 会呈现一个“错误”的图表。我看不出有什么问题。
不知何故,问题似乎在于数组的重置,因此这意味着 draw() 函数似乎在第一次迭代时只被调用一次。
请,请帮助