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

136
Views
Combinación dentro de la caja del interruptor

Solía tener un switch case simple, como este:

 const expr = 'Papayas'; switch (expr) { case 'Oranges': console.log('Oranges'); break; case 'Mangoes': console.log('Mangoes'); break; case 'Papayas': console.log('Papayas'); break; }

pero ahora cambiaron algunos criterios y necesito agregar una regla para los tres casos y dejar la funcionalidad anterior como estaba. Entonces, en caso de que tenga Papayas , mi resalt sería All y Papayas . Intenté combinarlo así:

 const expr = 'Papayas'; switch (expr) { case 'Oranges': case 'Mangoes': case 'Papayas': console.log('All'); case 'Oranges': console.log('Oranges'); break; case 'Mangoes': console.log('Mangoes'); break; case 'Papayas': console.log('Papayas'); break; }

pero eso no funciona correctamente. Siempre obtengo All y Oranges en el resultado. ¿Hay alguna manera de hacerlo con una switch case ?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puedes hacer algo como esto:

 const output = ['All']; switch (expr) { case 'Oranges': output.push('Oranges'); break; case 'Mangoes': output.push('Mangoes'); break; case 'Papayas': output.push('Papayas'); break; } console.log(...output);
about 4 years ago · Juan Pablo Isaza Report

0

¿Qué sucede si olvidé un descanso?

Si olvida un descanso, la secuencia de comandos se ejecutará desde el caso en el que se cumple el criterio y se ejecutarán los casos posteriores, independientemente de si se cumplió un criterio. - los documentos de MDN JS en el switch

Lo que sucede en su caso es que coincide con el case 'Papayas': console.log('All') y luego ejecuta el siguiente case 'Oranges': console.log('Oranges') break; a pesar de no cumplirse; luego viene la break de ese caso; sin esto, también estaría generando Mangoes and Papayas .

La primera solución trivial es simplemente duplicar el console.log('All') en todos los casos de cambio:

 switch (expr) { case 'Oranges': console.log('All'); console.log('Oranges'); break; case 'Mangoes': console.log('All'); console.log('Mangoes'); break; case 'Papayas': console.log('All'); console.log('Papayas'); }

se puede break el último corte. Una alternativa que requiere el uso de un segundo switch y la duplicación de los case es simplemente ejecutar un switch tras otro:

 let val = expr; switch (val) { case 'Oranges': case 'Mangoes': case 'Papayas': console.log('All') } switch (val) { case 'Oranges': console.log('Oranges'); break; case 'Mangoes': console.log('Mangoes'); break; case 'Papayas': console.log('Papayas'); break; }

pero me preguntaría si un switch es la construcción de lenguaje apropiada para usar aquí . Un if viene a la mente:

 let val = expr; if (val == 'Oranges' || val == 'Mangoes' || val == 'Papayas') { console.log('All'); switch (val) { case 'Oranges': console.log('Oranges'); break; case 'Mangoes': console.log('Mangoes'); break; case 'Papayas': console.log('Papayas'); break; } }

Idealmente, puede buscar el mensaje en un diccionario / "objeto" en terminología JS:

 const messages = { Oranges: 'Oranges', Mangoes: 'Mangoes', Papayas: 'Papayas' } let message = messages[expr]; if (message) { console.log('All'); console.log(message); }

Alternativamente, use funciones de flecha si su código no consiste solo en datos de mapeo -> datos sino datos -> acción:

 const funcs = { Oranges: () => console.log('Oranges'), Mangoes: () => console.log('Mangoes'), Papayas: () => console.log('Papayas') } let func = funcs[expr]; if (func) { console.log('All'); func(); }
about 4 years ago · Juan Pablo Isaza Report

0

Puede aprovechar la forma en que las declaraciones de selección continuarán después de hacer coincidir el primer elemento si hay una break; no se declara. El siguiente ejemplo utiliza saltos condicionales para generar lo siguiente.

  • Entrada: 'Todos' = All - Oranges Mangoes and Papayas
  • Entrada: 'Naranjas' = Oranges
  • Entrada: 'MangPap' = All - Mangoes and Papayas
  • Entrada: 'Mangos' = Mangoes
  • Entrada: 'Papayas' = Papayas
  • Entrada: no reconocida (predeterminada) = Input not recognized.

 const expr = 'MangPap'; var output = ''; switch (expr) { case 'All': output = 'All - '; case 'Oranges': if ( output.length > 0 ) { output += 'Oranges'; } else { output += 'Oranges'; } if (expr === 'Oranges') { break; } case 'MangPap': if ( output.length > 0 ) { } else { output += 'All - '; } case 'Mangoes': if ( output.length > 0 ) { output += ' Mangoes'; } else { output += 'Mangoes'; } if (expr === 'Mangoes') { break; } case 'Papayas': if ( output.length > 0 ) { output += ' and Papayas'; } else { output += 'Papayas'; } if (expr === 'Papayas') { break; } default: if ( output.length > 0 ) { } else { output += output = 'Input not recognized.'; } } console.log( output );

Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

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!