Мне нужно вызывать функцию javascript любое количество раз, не меняя предыдущие значения. У меня есть значок json, в котором есть 15 значков, и я использую оператор switch для вызова функции соответствующего значка. У меня проблема, когда появляется значок карты, потому что значок карты обычно группирует все значки, что означает, что в нем может быть еще один значок карты. Ниже мой код.
for(var i = 0;i<icon.length;i++) {
switch(icon.type) {
case 1:
display();
case 2:
map();
..
}
}
И функция карты будет похожа на
function map() {
for(var i = 0;i<icon.length;i++) {
switch(icon.type) {
case 1:
display();
case 2:
map();
..
}
}
}
Если функция карты снова вызывает свою собственную функцию, значения в основной функции карты переопределяются. Я не знаю, как сделать вызов своей функции без изменения предыдущих значений. Есть ли другой способ достичь этого?
Я не знаю, правильно ли я понял вашу проблему, но вы можете попытаться использовать технику, называемую memoization. Он используется для кэширования результата ранее вычисленного значения, поэтому может избежать необходимости пересчета.
И вот простой пример того, как это можно сделать
function isPrime(value) {
if (!isPrime.anwers) isPrime.answers = {};
if (isPrime.answers[value] != null) {
return isPrime.answers[value];
}
var prime = value != 1; // 1 can never be prime
for (var i = 2; i < value; i++) {
if (value % i == 0) {
prime = false;
break;
}
}
return isPrime.answers[value] = prime;
}