es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comprimir el arreglo de opciones de Javascript

He heredado un sitio web y estoy tratando de comprimir un script mal escrito. Una sección en particular actualiza las opciones en un campo select basado en otras selecciones. Toma los valores numéricos de otros dos campos select para actualizar el número de opciones posibles en un tercer campo.

Aquí está el código en cuestión:

var value = parseInt(first_value) + parseInt(second_value);
if(value == 1){
    var newOptions = {"0": "0", "1": "1",};
} else if(value == 2){
    var newOptions = {"0": "0", "1": "1", "2": "2",};
} else if(value == 3){
    var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",};
} else if(value == 4){
    var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",  "4": "4",};
} else if(value == 5){
    var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",  "4": "4", "5": "5",};
}

Continúa así hasta value == 30, por lo que termina siendo mucho código y estoy convencido de que hay una manera de reducirlo.

He intentado algunas soluciones por mí mismo que fallaron por completo, así que pensé que recurriría a la comunidad para ver si alguien tiene alguna idea.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma de reducir el código sería crear un objeto vacío llamado ‘newOptions’ y luego utilizar un bucle for para añadir claves y valores basados en el valor de ‘value’. Aquí tienes un ejemplo:

    var newOptions = {};
    
    for (var i = 0; i <= value; i++) {
      newOptions[i] = i;
    }
    

    Este código añadirá un par clave/valor al objeto ‘newOptions’ por cada valor desde 0 hasta ‘value’. Así que si ‘value’ es 3, creará un objeto que se verá así:

    {
      0: 0,
      1: 1,
      2: 2,
      3: 3
    }
    

    Luego puedes utilizar este objeto para actualizar las opciones en tu campo de selección.

Comments are closed.