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

134
Vistas
Manera elegante de buscar un número en una gran cantidad de arreglos (jQuery)

Me gustaría construir un buscador de tallas de moda para ayudar al cliente a encontrar su talla correcta.

Ejemplo: La medida del pecho de 78-81cm corresponde a una talla XS.

Ahora, por supuesto, puedo construir una cantidad infinita de matrices, declaraciones if y else, pero esto tiene que ser más elegante de alguna manera.

 $('.sub').click(function(){ var brust = $('#brust').val(); var brustxs = ['78','79','80','81']; var brusts = ['82','83','84','85']; var brustm = ['86','87','88','89']; var brustl = ['90','91','92','93','94','95','96','97']; var brustxl = ['98','99','100','101','102']; if( $.inArray(brust, brustxs) !== -1 ) { alert('found in'+' XS'); }else if ( $.inArray(brust, brusts) !== -1 ) { alert('found in'+' S'); }else { alert('nothing'); } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input label="brustumfang" value="80" type="text" id="brust"> <input type="submit" class="sub">

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

0

Puede tener un objeto con las definiciones y recorrerlo sin tener que cambiar el código que coincide.

Por ejemplo :

 var sizes = { xs: [78,79,81], s: [82,83,84,85] } for( var size in sizes ){ vas sizeArray = sizes[size]; if( $.inArray(brust, sizeArray ) > -1 ) { alert('found in'+ size ); break; //important bit } }

o para un mejor rendimiento, puede almacenar los tamaños ordenados como:

 var sizes = [ { size: "XS", range:[78,79,80] }, { size: "S", range:[81,82,83] } ]

u otra idea sería simplemente almacenar los puntos de ruptura de cada tamaño desde hasta y verificar si el tamaño se ajusta a ese rango como:

 var sizes = [ { size: "XS", from: 78, to:80}, { size: "S", from: 81, to:85}, ]; $.each(sizes, function(index,sizeInfo){ //using jQuery each same as foreach for array if( brust>=sizeInfo.from && brust<=sizeInfo.to ){ alert('found in'+ sizeInfo.size ); return false; //in jQuery is same as break; } });
about 4 years ago · Juan Pablo Isaza Denunciar

0

En lugar de mantener cada valor en una matriz, lo que puede hacer es mantener una matriz de tamaños que realice un seguimiento del valor mínimo, el valor máximo y la etiqueta. Luego, simplemente puede recorrer los tamaños y encontrar el que coincida (donde el tamaño mínimo es <= brustSize Y max size>= brustSize), así:

 let brustSizes = [{min: 78, max: 81, label: 'xs'}, {min: 82, max: 85, label: 's'}, {min: 86, max: 89, label: 'm'}, {min: 90, max: 97, label: 'l'}, {min: 98, max: 102, label: 'xl'}]; function getSize (brustSize) { let size = brustSizes.find(size => size.min <= brustSize && size.max >= brustSize); return size && size.label } console.log(getSize(81)); console.log(getSize(0)); console.log(getSize(84)); console.log(getSize(87)); console.log(getSize(96)); console.log(getSize(98));

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