Я перебираю массив, используя jquery для каждой функции.Я назначаю временную переменную для его обхода вместо самого фактического массива, поскольку я изменяю исходный массив с помощью сплайсинга.Тем не менее, похоже, что 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);
При третьем вызове примера, на 4-й итерации temp, v становится неопределенным, и поэтому следующая строка выдает ошибку «не могу прочитать длину неопределенного».Это происходит сразу после вызова array.splice(3,1)
, что похоже на то, что temp указывает на то же место, что и массив, а не на его копию.
Может кто-нибудь помочь?