【发布时间】:2011-11-19 15:24:58
【问题描述】:
我正在使用 jquery each 函数循环遍历一个数组。当我使用 splice 修改原始数组时,我为其分配了一个临时变量来循环而不是实际数组本身。然而,看起来temp 正在被修改,即使我拼接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 指向与数组相同的位置,而不是它的副本。
谁能帮忙?
【问题讨论】:
标签: javascript jquery arrays each array-splice