Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

104
Views
Filtrar datos en NodeJS

Tengo una matriz json donde contiene objetos que tienen campos de nombre y calificación. Quiero filtrar esa matriz donde la calificación es 5. Puede ser fácil de encontrar, pero me quedé atascado. A continuación se muestra mi objeto json.

 let products = [ { "name" : "product 1", "rating" : 5 }, { "name" : "product 2", "rating" : 4 }, { "name" : "product 3", "rating" : 5 }, { "name" : "product 4", "rating" : 2 }]

Aquí estoy usando la funcionalidad de filtro pero no puedo obtener ¿Cómo puedo usarlo correctamente?

Esta es la función que he escrito pero no funciona.

 const prod = (products) => { products.filter((proct) => { if(proct === 5){ console.log(proct.name); } }); } prod(products);

Alguien hágame saber lo que estoy haciendo mal.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

la función de filter debe devolver un valor booleano como resultado

La función es un predicado, para probar cada elemento de la matriz. Devuelve un valor que fuerza a verdadero para mantener el elemento, o a falso en caso contrario.

matriz.prototipo.filtro

 let products = [{ "name": "product 1", "rating": 5 }, { "name": "product 2", "rating": 4 }, { "name": "product 3", "rating": 5 }, { "name": "product 4", "rating": 2 } ] products = products.filter(({rating}) => rating === 5) console.log(products)

Cada elemento de su matriz es un objeto, y supongo que está buscando rating===5 .

Su función debe ser:

 let products = [{ "name": "product 1", "rating": 5 }, { "name": "product 2", "rating": 4 }, { "name": "product 3", "rating": 5 }, { "name": "product 4", "rating": 2 } ] const prod = (products) => { products.filter((proct) => { if (proct.rating === 5) { console.log(proct.name); return true; } return false }); } prod(products)


Obtener solo la clave de name :

Eche un vistazo a la función de mapa que crea una nueva matriz a partir de una matriz anterior:

 .map(({name}) => name)

Código completo:

 let products = [{ "name": "product 1", "rating": 5 }, { "name": "product 2", "rating": 4 }, { "name": "product 3", "rating": 5 }, { "name": "product 4", "rating": 2 } ] products = products.filter(({rating}) => rating === 5).map(({name}) => name) console.log(products)

about 4 years ago · Juan Pablo Isaza Report

0

Su código no está comprobando la propiedad. sino el objeto mismo. Usa el . operador para verificar la propiedad específica:

 let products = [ { "name" : "product 1", "rating" : 5 }, { "name" : "product 2", "rating" : 4 }, { "name" : "product 3", "rating" : 5 }, { "name" : "product 4", "rating" : 2 }] const prod = (products) => { products.filter((proct) => { if(proct.rating === 5){ console.log(proct.name); } }); } prod(products);

about 4 years ago · Juan Pablo Isaza Report

0

Su condición es comparar proct , un objeto, con el valor 5 . Probablemente olvidó acceder a la propiedad de rating de proct :

 products.filter((proct) => { if(proct.rating === 5){ console.log(proct.name); } });

Sin embargo, está utilizando el filter de forma incorrecta. Filter es un método cuyo objetivo principal es obtener todos los elementos de la matriz que responden a una condición y devolverlos, y no solo iterar sobre una matriz y ejecutar código (para eso forEach ). Un código más correcto sería:

 const filteredProducts = products.filter((proct) => proct.rating === 5); console.log(filteredProducts); // [{ name: "product 1", rating: 5 }, { name: "product 3", rating: 5 }] filteredProducts.forEach((proct) => console.log(proct.name));

Esta solución primero recupera todos los productos cuya calificación es 5 y luego itera sobre cada uno de ellos para imprimir su nombre.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!