у меня огромная проблема с определением областей и пунктов. Я хочу иметь переменную tmp, из которой я удаляю один элемент. Но глобальная переменная должна остаться нетронутой. Это то, что я придумал. Этот;
var test = ['test', 'huhu'];
function foo(bar) {
var tmpTest = test;
var index = tmpTest.indexOf(bar);
if (index > -1) {
tmpTest.splice(index, 1);
}
console.log(tmpTest);
}
foo('huhu');
console.log(test);
Должен произвести это;
test
test, huhu
Но производит это;
test
test
Я тоже пытался сделать var tmpTest = new Array(test);
Но это останавливает работу сплайсинга. Я думаю, что происходит, когда я устанавливаю tmpTest = test
, tmpTest
просто становится ссылкой на исходную переменную test
? Как я могу обойти это?
tmpTest
, иtest
ссылаются на один и тот же массив (пространство в памяти)! Вы должны скопировать массив другим способом, например:var tmpTest = test.slice();
! - person ibrahim mahrir   schedule 04.04.2017