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

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

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

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