Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
¿Es posible hacer que la clave de un objeto sea más de una palabra?

Estoy tratando de resolver el siguiente problema: (No es una pregunta de tarea, solo una práctica de entrevista).

Cree una función "fastCache" que tome un argumento (una función) y devuelva una función. Cuando se invoca fastCache, crea un objeto que rastrea las llamadas a la función devuelta, donde cada entrada a la función devuelta se asocia con su salida. Cada llamada posterior a esa función devuelta con el mismo argumento devolverá la salida directamente desde el objeto, en lugar de volver a invocar la función original.

Pude resolver esto cuando la entrada es solo un argumento. Pero para el siguiente ejemplo, no tengo idea de cómo hacerlo: L

 // // MULTIPLE ARGUMENTS CASE const sumMultiplyBy2 = (num1, num2) => 2 * (num1 + num2); const cachedSumMultiplyBy2 = fastCacheMult(sumMultiplyBy2); console.log(cachedSumMultiplyBy2(5, 10)); // -> 30 console.log(cachedSumMultiplyBy2(1, 2)); // -> 6 console.log(cachedSumMultiplyBy2(5, 10)); // -> 30 // from the cache object // */

Este es el código que escribí para el caso de argumento único:

 const fastCache = (callback) => { const obj = {}; return (input) => { if (input in obj) { console.log("from cache"); console.log(obj); return obj[input]; } else { obj[input] = callback(input); return callback(input); } } } iplyBy2 = num => num * 2; const cachedMultiplyBy2 = fastCache(multiplyBy2); console.log(cachedMultiplyBy2(100)); // -> 200 console.log(cachedMultiplyBy2(150)); // -> 300 console.log(

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Supongo que esto es lo que estás buscando:

 function add(...numbers) { return numbers.reduce((accumulator, current) => { return accumulator += current; }); }; function sumMultiplyBy2(numbers){ return add(numbers) * 2 } sumMultiplyBy2(200) //400 sumMultiplyBy2(100,50) //300
about 4 years ago · Juan Pablo Isaza Denunciar

0

Así que traté de unir los argumentos como se sugiere en los comentarios y obtuve un código de trabajo:

 const fastCacheMult = (callback) => { const obj = {}; return (...inputs) => { if (inputs.join('') in obj) { console.log("from cache"); return obj[inputs.join('')]; } obj[inputs.join('')] = callback(...inputs); return callback(...inputs); } } const sumMultiplyBy2 = (num1, num2) => 2 * (num1 + num2); const cachedSumMultiplyBy2 = fastCacheMult(sumMultiplyBy2); console.log(cachedSumMultiplyBy2(5, 10)); //30 console.log(cachedSumMultiplyBy2(1, 2)); //6 console.log(cachedSumMultiplyBy2(5, 10)); //30

Sin embargo, también descubrí que solo puedo usar el parámetro de descanso y funciona tanto para argumentos únicos como múltiples:

 function fastCacheMult(callback) { let obj = {}; return function (...inputs) { if (obj[inputs]) { console.log("from cache"); return obj[inputs]; } obj[inputs] = callback(...inputs); return obj[inputs]; } } const sumMultiplyBy2 = (num1, num2) => 2 * (num1 + num2); const cachedSumMultiplyBy2 = fastCacheMult(sumMultiplyBy2); console.log(cachedSumMultiplyBy2(5, 10)); // -> 30 console.log(cachedSumMultiplyBy2(1, 2)); // -> 6 console.log(cachedSumMultiplyBy2(5, 10)); // -> 30 // from the cache object

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda