Javascript重置数组
当我试图重置数组时,我有一些非常奇怪的行为;例如:Javascript重置数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,当我试图重置数组时,我有一些非常奇怪的行为;例如: data.length=0; 其中数据是一个数组。我将尝试在这里只包含相关代码,但基本上是我想要的;我做的是在我的程序的每次迭代中,我用更新的值填充数组,然后在另一个函数中使用该数组。但是,当我重置数组时,函数似乎在第一次迭代时获得值,但之后没有 但是,当我不重置数组时,函数会得到值,但也会得到旧值。我不想要这个,因为我只想要新的更新值。这是一段代码片段: var buffer = [['1',[0]],['2',[0]],['3
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);
}
}
但是如果我不这样做或者不清除数组,那么draw()将呈现一个“错误”的图表。我看不出有什么不对
问题似乎在于数组的重置,正因为如此,它意味着draw()函数在第一次迭代中似乎只被调用一次
请,请帮助查看您的代码,我不确定,但为什么您甚至有
数据集
?你从来没有读过它的任何内容,你说你想每次通过数组清除它
你的意思是要做像这样的事情:
for(var i=0; i<buffer.length; i++) {
if(buffer[i][0] == distances.miles) {
buffer[i][1][0]++;
}
dataset.push(buffer[i][1][0]);
}
draw(dataset); // draw outside the loop, using dataset.
for(var i=0;i您根本不需要设置length
。要清除所有值的列表,只需将其设置为空列表:
dataset = [];
Thansk如果这样做,则不会绘制任何内容。length
属性不是只读的。将长度设置为零是清空数组的有效方法。@hvgotcodesarray.length=0;
将重置数组而不中断引用。执行此操作时,array=[];
,您指向数组的任何引用都将不再有效。感谢您的回复,但即使我已在循环外绘制()并按dataset=[]重置,仍然没有绘制任何内容。dataset数组在实际绘制()中用作数组函数。@hvgotcodes如果我不重置数组,那么当数组变大时,它将绘制所有元素。我只需要它接收到的更新值。这将中断外部引用。这可能不重要,但需要记住。dataset=[];
或dataset.length=0;
与第一个几乎相同,可能会创建一个新数组,从而在内存中分配另一个空间,而第二个只是重置现有数组。要重置数组,由于xophmeisters语句,设置长度很好甚至更好。
dataset = [];