この解答例は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メソッドを使って関数を呼び出しています。

注意: この実装は厳密な計算量的な側面を考えた実装ではありません。実際のアプリケーションで使用する場合は、パフォーマンスの問題に注意してください。