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

273
Vistas
Filtrado de una matriz de objetos por un valor de propiedad de número (rango de valores)

Tengo una matriz de objetos con una lista de cursos y sus precios.

 const courses = [ { name: "Courses in England", prices: [ 0, 100] }, //1st object { name: "Courses in Germany", prices: [ 500, null] }, //2nd object { name: "Courses in Italy", prices: [ 100, 200] }, //3rd object { name: "Courses in Russia", prices: [null, 400] }, //4th object { name: "Courses in China", prices: [ 50, 250] }, //5th object { name: "Courses in USA", prices: [ 200, null] }, //6th object { name: "Courses in Kazakhstan", prices: [ 56, 324] }, //7th object { name: "Courses in France", prices: [null, null] }, //8th object ];

Aquí utilicé el método de filtro, que funciona cuando quiero filtrar por la propiedad del nombre del curso.

 const filter = courses.filter((obj) => { return obj.name === "Courses in England"; }); console.log(filter); returns // { name: "Courses in England", prices: [0, 100] }

Aquí usé el ciclo for para obtener todos los objetos en la matriz de cursos.

 const filter = function (arr) { for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } }; filter(courses);

No puedo entender cómo modificar la función de filtro para aceptar la propiedad de precios que tiene 2 valores de elementos numéricos [100, 200] y para que solo devuelva objetos similares en la matriz con una propiedad de rango de precios similar.

Mi objetivo es el siguiente. Por ejemplo, cuando paso el número 100
debería devolver:

 { name: "Courses in England", prices: [ 0, 100] } { name: "Courses in Italy", prices: [ 100, 200] }

porque ambos objetos tienen el valor 100.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

que ?

el uso es:

 let answerArray = courses.filtering( argument_value )
  • si argument_value es una string ,
    la respuesta busca todos los elementos donde name === argument_value

  • si argument_value es una array ,
    la respuesta busca todos los elementos donde la prices array es la misma que la argument_value array

  • si argument_value es null numérico (entero o flotante)
    la respuesta busca todos los elementos donde la prices array incluye un valor null

- si `argument_value` es un número entero, la respuesta busca todos los elementos donde `prices array range` contiene `argument_value`

 const courses = [ { name: 'Courses in England', prices: [ 0, 100] } // 1st object , { name: 'Courses in Germany', prices: [ 500, null] } // 2nd object , { name: 'Courses in Italy', prices: [ 100, 200] } // 3rd object , { name: 'Courses in Russia', prices: [null, 400] } // 4th object , { name: 'Courses in China', prices: [ 50, 250] } // 5th object , { name: 'Courses in USA', prices: [ 200, null] } // 6th object , { name: 'Courses in Kazakhstan', prices: [ 56, 324] } // 7th object , { name: 'Courses in France', prices: [null, null] } // 8th object ]; courses.filtering = filter_Key => { if (typeof(filter_Key) === 'string') return courses.filter(obj => obj.name === filter_Key) if (Array.isArray(filter_Key)) return courses.filter(obj => JSON.stringify(obj.prices) === JSON.stringify(filter_Key)) if (filter_Key===null || Number.isFinite(filter_Key)) return courses.filter(obj => obj.prices.includes(filter_Key)) // if (Number.isInteger(filter_Key)) // return courses.filter(obj => // { // let [min,max] = [...obj.prices].sort((a,b)=>ab) // if (min===null) min = max || 0 // if (max===null) max= -1 // return ( min <= filter_Key && filter_Key <= max ) // }) // anything else... return [] }; console.log('Courses in England ->\n' + JSON.stringify(courses.filtering( 'Courses in England' ))) console.log('\n[100, 200] ->\n' + JSON.stringify(courses.filtering( [100, 200] ))) console.log('\n100 ->\n' + JSON.stringify(courses.filtering( 100 )).replaceAll('},{','}\n,{')) console.log('\nnull ->\n' + JSON.stringify(courses.filtering( null )).replaceAll('},{','}\n,{'))
 .as-console-wrapper {max-height: 100% !important;top: 0;} .as-console-row::after {display: none !important;}

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. Regresar

la propiedad de los precios que tiene 2 valores de elementos numéricos

recorra todos los objetos y verifique que el valor de la propiedad de precios tenga el tipo de número y devuelva dicho objeto.

 const result = courses.filter(({ prices }) => prices.every(price => typeof price === "number")) console.log(result) // With love @kouqhar
  1. Y

para que solo devuelva objetos similares en la matriz con una propiedad de rango de precios similar

puede proporcionar un rango de números y luego recorrer el result filtrando el rango.

Por ejemplo, rango de número entre 100 - 500 Su código final se verá como el ejemplo de código a continuación, puede escribir con esto (price >= 100 && price <= 500) también el operador && con ||

 const result = courses.filter(({ prices }) => prices.every(price => typeof price === "number" && (price >= 100 && price <= 500))) console.log(result) // With love @kouqhar
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