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

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