我正在使用 jquery each 函数循环遍历一个数组。当我使用 splice 修改原始数组时,我为其分配了一个临时变量来循环而不是实际数组本身。temp
但是,即使我 splice ,它看起来也正在被修改array
。
function example (Data, index, array) {
var temp = array;
$.each(temp, function(i, v) {
if(Data["b"+v].length > index) {
//do stuff
} else {
array.splice(i,1);
}
});
if(array.length > 0) {
example(Data, index+1, array);
}
}
array = [1,2,3,4]
Data = {"b1":[a,b,c,d],"b2":[e,f,g,h], "b3":[i,j], "b4":[k,l,m,n]};
example(Data, 0, array);
在第三次调用 example 时,在 temp 的第 4 次迭代中,v 变为未定义,因此下一行会输出“无法读取未定义长度”的错误。这发生在array.splice(3,1)
被调用之后,似乎 temp 指向与数组相同的位置,而不是它的副本。
任何人都可以帮忙吗?