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

351
Vistas
¿Cómo funciona el método de prueba en este ejemplo del libro EloquentJavascript?

En la 4ª línea utiliza el 2º parámetro de la función llamada map. Pero no hay nada sobre lo que realmente hace la transformación (elemento). Tal vez me estoy perdiendo algo o hace referencia a otra función. Este ejemplo está en el quinto capítulo de la tercera edición del libro EloquentJavaScript.

 function map(array, transform) { let mapped = []; for (let element of array) { mapped.push(transform(element)); } return mapped; } let rtlScripts = SCRIPTS.filter(s => s.direction == "rtl"); console.log(map(rtlScripts, s => s.name)); // → ["Adlam", "Arabic", "Imperial Aramaic", …]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

transform es una función que se pasa a la función map como argumento. Para cada objeto filtrado de la matriz, se llama a la transform , y se devuelve el valor del nombre de ese objeto, y eso se inserta en una matriz (que se devuelve desde el map una vez que se completa la iteración).

La sintaxis de la función de flecha puede ser un poco confusa, así que aquí está el mismo código usando una declaración de función. Nota: en este punto no lo está llamando, lo está pasando como una referencia para que pueda llamarse más tarde (en el map ).

 // Pass in the array of filtered objects, and the callback function // which returns the name value of the obj in the current loop iteration const out = map(rtlScripts, function (obj) { return obj.name; });

En este ejemplo, reemplacé "elemento" con "obj" para que sea más fácil comprender qué estructuras de datos se están manipulando.

 function map(array, transform) { let mapped = []; // For each object in the array call the // transform function which returns only the name value // and add that to the array for (let obj of array) { mapped.push(transform(obj)); } return mapped; } const SCRIPTS = [{name: 'English',direction:'ltr'},{name:'Adlam',direction:'rtl'},{name: 'French',direction:'ltr'},{name:'Arabic',direction:'rtl'},{name:'Imperial Aramaic',direction:'rtl'}]; // `filter` out all the objects that are "rtl" const rtlScripts = SCRIPTS.filter(obj => obj.direction == "rtl"); // Pass in the filtered array of objects, and for // each of them call the function which returns only the name const out = map(rtlScripts, function (obj) { return obj.name; }); console.log(out); // → ["Adlam", "Arabic", "Imperial Aramaic", …]

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