Я столкнулся с этой проблемой memoize. Мне нужно создать функцию, которая будет проверять, было ли значение уже вычислено для данного аргумента, вернуть предыдущий результат или запустить вычисление и вернуть это значение.Как создать функцию memoize
Я потратил часы на это, и пока я новичок в JS. Я не могу понять, как это сделать. Я не могу использовать какие-либо встроенные функции и действительно хотел бы понять, что мне нужно делать.
Вот что у меня до сих пор, что так неправильно, что на данный момент он выглядит как псевдокод. Я искал существующие вопросы о мемуазе, но я пока не могу сделать какое-либо решение. Буду признателен за любую оказанную помощь.
myMemoizeFunc = function(passedFunc) {
var firstRun = passedFunc;
function check(passedFunc){
if(firstRun === undefined){
return passedFunc;
}else{return firstRun;}
}
};
Извините, я должен был быть более ясным. Вот мои особые требования: myMemoizeFunc должен вернуть функцию, которая проверит, был ли вычисление уже рассчитано для данного аргумента и, если возможно, возвращает значение val. ПропущенныйFunc - это функция, которая содержит результат вычисления. Я понимаю, что это может показаться дубликат, но я отмечаю, что это не так, поскольку у меня есть некоторые серьезные трудности с пониманием того, что я должен делать здесь, и нужна дополнительная помощь, чем в других сообщениях. Это то, что мой процесс мышления приносит мне, но снова, я ухожу.
myMemoizeFunc = function(passedFunc) {
var allValues = [];
return function(){
for(var i = 0; i < myValues.length; i++){
if(myValues[i] === passedFunc){
return i;
}
else{
myValues.push(passedFunc);
return passedFunc;
}
}
}
};
я не должен возвращаться я или passedFunc здесь, но что еще я мог сделать в пределах, если/иначе при проверке значения? Я долгое время рассматривал эту проблему, я начинаю реализовывать код, который является смешным и нуждается в свежих советах.
возможно дубликат [Как подчеркивание memoize реализован в JavaScript] (http://stackoverflow.com/questions/24486856/how-underscore-memoize- is-implement-in-javascript) – b4hand
Создайте объект и используйте значение, которое вы хотите вычислить как ключ. Проверьте объект, чтобы узнать, существует ли значение в объекте, если оно его использует. Если не рассчитать, сохраните значение и верните его. – epascarello
Вам не хватает «запустить шаг вычисления», а также нужно разработать метод для доступа к «предыдущему результату», чтобы он мог быть возвращен позже. – Bergi