【发布时间】:2015-08-22 18:31:11
【问题描述】:
我创建了一个函数,每次更改滑块的值时都会调用该函数。问题在于该函数生成一个数组,该数组稍后会传递给其他函数。到目前为止,一切都很好,但是滑块可以根据用户的需要进行多次调整,正如我所说,这会触发生成数组的函数,这意味着我可以获得数百甚至数千个数组,而我实际上需要最后一个.这是我的代码:
function tg() {
$(".dot").remove();
var p, x, y, xo, yo, agl, spd, g, t = 1, isin2, angle1, n = 0, i = 1;
var m = [];
p = $("#ba").position();
xo = p.left;
yo = p.top;
spd = $("#spd").val();
agl = $("#agl").val();
g = $("#g").val();
angle1 = formula;
isin2 = true;
while (isin2) {
y = formula;
x = formula;
m.push([x, y]);
//...
t++;
isin2 = isin(x, y);
}
if (isin2 == false) {
$(".dot").last().remove();
m.pop([x, y]);
console.log(m);
}
activate(m);
}
滑块来了,我实际上只给出了其中一个,因为其余两个是绝对副本,它们只是在处理其他变量。
$(document).ready(function(){
$("#slagl").slider({
min:0,
max:89,
value:15,
range:"min",
slide: function(event, ui){
$("#agl").val(ui.value);
tg();
}
});
您可以很容易地看到它只是堆积新的和新的阵列而没有清理其他阵列。目标是在每次调用函数时以某种方式删除所有其他冗余数组,在幻灯片上制作并只保留最后一个。
【问题讨论】:
-
m.push([x,y]);如果您只需要一个元素,则将其直接应用于 m 或第一个元素,或者只保留最后 10 个左右 ... -
不,我需要存储在数组中的一堆元素,而不是一堆包含一堆元素的数组,因为它发生了。即使是最轻微的滑块滑动也会附加 5-6 个新数组。我想,浏览器会将它们保留在某个地方,但我需要找到这个地方在哪里以及如何访问它。
-
“即使是最轻微的滑块滑动也会附加 5-6 个新数组” - 听起来你需要去抖动 - stackoverflow.com/q/24004791/1837472
-
@Felipe Brahm,是的,但问题是该算法将这些数组中的每一个传递给以下函数,而它只需要获取最后一个,这使我的球运行 1000,形象地说,坐标,直到它到达包含正确数组的正确(最后一个)数组。这就是让我认为 idk、删除或阻止冗余函数的最佳位置应该发生在 tg() 中的原因,因为它生成、打包和发送所需的值。
标签: javascript jquery arrays google-chrome