Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

281
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda