У меня возникла ситуация, в которой я бы очень выиграл от использования кеширования функций (memoization).Самый эффективный способ использования объекта в качестве хеш-ключа
Однако моя функция принимает один аргумент, значение которого является очень большим и многомерным Array
.
Стандартный способ сделать кеширование (и единственный способ, о котором я могу думать) - создать свойство cache
самой функции (cache
- это хэш). При каждом запуске функции вы можете проверить наличие myFunc.cache[arg]
и просто вернуть это значение, если оно существует, иначе вы выполните вычисления как обычно и добавьте аргумент как свойство cache
.
Однако, похоже, что javascript не пытается оценить строки, используемые в качестве хеш-ключей при их создании, и всегда просто рассматривает их как строки. example
Я могу применить JSON.stringify
к аргументу, но поскольку массив будет большим и вложенным, мне интересно, существует ли более эффективный способ определения уникальных аргументов.
Это какая-то среда, которую вы контролируете или просто старые добрые браузеры? В основном вы запрашиваете новые [карты] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map). –
Просто простой старый браузер – LukeP
Какой будет желаемый вывод вашего JSFiddle? –