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

440
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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