この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
14. `memo()`を実装する
解答例:
const memo = (func, resolver = null) => { const cache = new Map() return (...args) => { const key = resolver ? resolver.apply(this, args) : args.join('_') if (cache.has(key)) { return cache.get(key) } const result = func.apply(this, args) cache.set(key, result) return result }}
この実装では、Map
オブジェクトを使用してキャッシュを保持し、resolver
が指定されていればそれを使ってキャッシュのキーを生成しています。resolver
が指定されていなければ、デフォルトのキー生成関数を使用しています。
また、...args
構文を使って可変長引数を取得し、apply
メソッドを使って関数を呼び出しています。
注意: この実装は厳密な計算量的な側面を考えた実装ではありません。実際のアプリケーションで使用する場合は、パフォーマンスの問題に注意してください。