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

429
Views
¿Cómo resuelvo el error, filter() no es una función?

Esto es lo que probé. Además order es parte de una consulta, por lo que funciona, simplemente no estoy publicando el resto del código para que no se ensucie. Recibía errores en los paymentsResults[i].filter() que decían que no es una función. De todos modos, si hay una mejor manera de escribirlo, házmelo saber. Lo aprecio.

 const getCatType = order => { if ( order.type === "Invoice" || order.type === "One-time" || order.type === "Free" ) { return "Once"; } else if (order.type === "Semester") { return "Recurring"; } }; for (let i = 0; i < paymentsResults.length; i++) { const paymentsOnce = paymentsResults[i].filter(o => getCatType(o) === "Once"); }
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Usar un switch sería más útil. Y luego, todo lo que necesita hacer es filter los objetos donde coinciden, sin necesidad de un ciclo adicional.

 function getCatType(order) { switch(order.type) { case 'Invoice': case 'One-time': case 'Free': return 'Once'; case 'Semester': return 'Recurring'; default: return null; } } const paymentsResults = [ { type: 'Invoice', id: 1 }, { type: 'Semester', id: 2 }, { type: 'Free', id: 3 }, { type: 'One-time', id: 4 } ]; function typeOfPayment(type) { return paymentsResults.filter(order => { return getCatType(order) === type; }); } console.log(typeOfPayment('Once')); console.log(typeOfPayment('Recurring'));

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar reduce y también puede verificar los tipos que necesita directamente en reduce cb, mezcle esto con una expresión regular y puede extraer cualquier tipo de órdenes que desee creando una matriz simple con los tipos que necesita. Suponiendo que sus pagosResultados son algo como esta matriz, puede hacer esto:

 const paymentsResults = [ { order: { type: 'Invoice', total: 10 }, price: 2 }, { order: { type: 'One-time', total: 11 } }, { order: { type: 'Free', total: 12 } }, { order: { type: 'Semester', total: 13 } }, ]; let extract = ['Invoice', 'One-time', 'Free']; const regex = new RegExp(extract.join('|'), 'i'); let paymentsOnce = paymentsResults.reduce((acc, obj) => { if (regex.test(obj.order.type)) acc.push(obj); return acc; }, []); console.log(paymentsOnce);

about 4 years ago · Juan Pablo Isaza Report

0

Supongo que está confundido con lo que se supone que hace filter() .

filter() es una función de matriz que itera sobre la matriz dada y devuelve los objetos que se ajustan a las condiciones de filtro definidas en la función de devolución de llamada.

Por lo tanto, no necesita for-Loop para ingresar a cada elemento de su matriz, sino que simplemente llame a su función de filtro en la propia matriz.

Esto solo se aplica si tiene una Matriz de objetos con el type de clave en PaymentsResults. Lamentablemente, no proporcionó su estructura de datos de origen. Si no es como supuse, comente a continuación cómo se ve su estructura de datos.

 for (let i = 0; i < paymentsResults.length; i++) { const paymentsOnce = paymentsResults[i].filter(o => getCatType(o) === "Once"); }

Se convertirá:

 // ONLY GIVEN IF YOUR STRUCTURE LOOKS LIKE // paymentsResults = [{type: 'Thing'}, {type: 'Thing'}, ...]; const paymentsOnce = paymentsResults.filter(o => getCatType(o) === "Once");
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!