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

284
Vistas
usar filtro para devolver valores de propiedad en un objeto

Tratando de hacer una función que use un filtro pero no un bucle for o while o una función foreach, que recorrerá una matriz de objetos solo para devolver sus valores de propiedad. Por ejemplo,

 function getShortMessages(messages) { return messages.filter(function(obj){ return obj.message }); }

entonces si llamo

 getShortMessages([{message:"bleh"},{message:"blah"}]);

Debería obtener una devolución de una matriz = ["bleh","blah"] Simplemente no estoy seguro de cómo implementar el filtro según estas pautas. También estaba pensando en usar una función de cadena, tal vez .map.

//// Aquí está la especificación completa del desafío del código/////

Básico: Filtro Ejercicio 4 de 18

Tarea

Use Array#filter para escribir una función llamada getShortMessages.

getShortMessages toma una matriz de objetos con propiedades '.message' y devuelve una matriz de mensajes que tienen menos de < 50 caracteres.

La función debe devolver una matriz que contenga los mensajes en sí, sin su objeto contenedor.

Argumentos

  • mensajes: una matriz de 10 a 100 objetos aleatorios que se ven así:
 { message: 'Esse id amet quis eu esse aute officia ipsum.' // random }

Condiciones

  • No utilice bucles for/while o Array#forEach.
  • No cree funciones innecesarias, por ejemplo, ayudantes.

Insinuación

  • ¡Intenta encadenar algunos métodos de matriz!

Ejemplo

 [ 'Tempor quis esse consequat sunt ea eiusmod.', 'Id culpa ad proident ad nulla laborum incididunt.', 'Ullamco in ea et ad anim anim ullamco est.', 'Est ut irure irure nisi.' ]

Recursos

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

repetitivo

 function getShortMessages(messages) { // SOLUTION GOES HERE } module.exports = getShortMessages

» Para volver a imprimir estas instrucciones, ejecute: funcional-javascript print » Para ejecutar su programa en un entorno de prueba, ejecute: funcional-javascript ejecutar programa.js » Para verificar su programa, ejecute: funcional-javascript verificar programa.js » Para obtener ayuda ejecutar: ayuda funcional-javascript

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Use .filter cuando desee obtener los objetos completos que coincidan con la propiedad o propiedades esperadas. Use .map cuando tenga una variedad de cosas y quiera hacer alguna operación en esas cosas y obtener el resultado.

El desafío es obtener todos los mensajes que tienen 50 caracteres o menos. Por lo tanto, puede usar el filter para obtener solo los mensajes que pasan esa prueba y luego map para obtener solo el texto del mensaje.

 function getShortMessages(messages) { return messages .filter(function(obj) { return obj.message.length <= 50; }) .map(function(obj) { return obj.message; }); }

JSFiddle: http://jsfiddle.net/rbbk65sq/

Si es posible que los objetos de entrada no tengan una propiedad de message , querrá probarlo con obj.message && obj.message.length <= 50 así:

 function getShortMessages(messages) { return messages .filter(function(obj) { return obj.message && obj.message.length <= 50; }) .map(function(obj) { return obj.message; }); }

ES6

Las mismas muestras de código en ES6:

 const getShortMessages = (messages) => messages .filter(obj => obj.message.length <= 50) .map(obj => obj.message);

Y si los objetos de entrada pueden no tener la propiedad del message :

 const getShortMessages = (messages) => messages .filter(obj => obj.message && obj.message.length <= 50) .map(obj => obj.message);

JSFiddle: http://jsfiddle.net/npfsrwjq/

over 4 years ago · Santiago Trujillo Denunciar

0

Aunque me doy cuenta de que este hilo es muy antiguo, sentí que era necesario comentar en caso de que alguien se tropiece con él nuevamente. Lo haría como arriba simplemente usando la sintaxis es6 como esta:

 objects.filter(obj => obj.key === 'value').map(filteredObj => filteredObj.key);

Así que el ejemplo anterior sería:

 getShortMessages = (messages) => messages.filter(obj => obj.message.length <= 50).map(obj => obj.message);
over 4 years ago · Santiago Trujillo Denunciar

0

Con valor de retorno personalizado (Ejemplo ES6 simple);

 const customReturnFiltere = (result) => { return products.filter((obj) => { return obj.stock !== 0; }) .map((finalResult) => { return { ...finalResult, info: 'product will be filtered if stock is 0' } }); }
over 4 years ago · Santiago Trujillo 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