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

272
Views
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 answers
Answer question

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 Report

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