← Alle AufgabenJavaScript · Middle
memoize: Ergebnisse cachen
Schreib eine Funktion memoize(fn), die eine gecachte Version von fn liefert: ein wiederholter Aufruf mit denselben Argumenten liefert das gecachte Ergebnis, ohne fn aufzurufen.
Die Argumente sind Primitive, und es können mehrere sein. m(1) und m("1") sind verschiedene Aufrufe. Auch ein Ergebnis undefined muss gecacht werden.
Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
Tests (5)
const f = fn((n) => n * 2); const m = memoize(f); expect(m(2)).toBe(4); expect(m(2)).toBe(4); expect(f).toHaveBeenCalledTimes(1);
const f = fn((a, b) => a + b); const m = memoize(f); m(1, 2); m(1, 2); m(2, 1); expect(f).toHaveBeenCalledTimes(2);
const f = fn((x) => typeof x); const m = memoize(f); expect(m(1)).toBe('number'); expect(m('1')).toBe('string'); expect(f).toHaveBeenCalledTimes(2);
const f = fn(() => undefined); const m = memoize(f); m(5); m(5); expect(f).toHaveBeenCalledTimes(1);
const a = memoize((x) => x + 1); const b = memoize((x) => x + 2); expect(a(1)).toBe(2); expect(b(1)).toBe(3);