Reduce the number of arrays

Asked

Viewed 73 times

-2

I wanted to reduce the number of arrays and tried this way the problem is that I think something is missing because it is not reading the information inside the json.

<select id="myselect" class="classa" onchange="change_myselect(this.value)">
            
            <option value="">Faixa etária</option>
            <option class="opcoes" value="faixaA">0 a 17 anos</option>
            <option class="opcoes" value="faixaB">18 a 25 anos</option>
            <option class="opcoes" value="faixaC">26 a 35 anos</option>
            <option class="opcoes" value="faixaD">36 ou mais</option>
            <option class="opcoes" value="faixaE">Desconhecido</option>
        </select>

        <br> <br>

        <select id="myselect2" class="classb" onchange="change_myselect(this.value)">
            <option class="opcoes" value="">Sexo:</option>
            <option class="opcoes" value="faixaF">Masculino</option>
            <option class="opcoes" value="faixaG">Feminino</option>
            <option class="opcoes" value="faixaH">Desconhecido</option>
        </select>

        <br> <br>
        
        <select id="myselect3" class="classc" onchange="change_myselect(this.value)">
            <option class="opcoes" value="">Recurso a arma:</option>
            <option class="opcoes" value="faixaI">Sim</option>
            <option class="opcoes" value="faixaJ">Não</option>
            <option class="opcoes" value="faixaK">Desconhecido</option> 
        </select>
        
        <p id="demoA"></p>
        
        <script type="text/javascript">
    
        function change_myselect(value) {

            $.getJSON("dados.json", function(json) {
            
             var faixas = { };
             var genero = { };
             var armas = { };
             
             for(var i = 0; i < json.length; i++) {

                    if (faixas[json[i].Faixa] == undefined) {
                        faixas[json[i].Faixa] = ["FaixaA"];
                        faixas[json[i].Faixa] = ["FaixaB"];
                        faixas[json[i].Faixa] = ["FaixaC"];
                        faixas[json[i].Faixa] = ["FaixaD"];
                        faixas[json[i].Faixa] = ["FaixaE"];
                    }

                        faixas[json[i].Faixa].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);

                    if (genero[json[i].Sexo] == undefined) {
                        genero[json[i].Sexo] = ["Masc"];
                        genero[json[i].Sexo] = ["Fem"];
                        genero[json[i].Sexo] = ["Desconhecido"];
                    }

                        genero[json[i].Sexo].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);

                    if (armas[json[i].RecursoArma] == undefined) {
                        armas[json[i].RecursoArma] = ["Sim"];
                        armas[json[i].RecursoArma] = ["Não"];
                        armas[json[i].RecursoArma] = ["Desconhecido"];
                    }
                        
                        armas[json[i].RecursoArma].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);

                }
                
                 if($('#myselect').val() == "faixaA"){
                    document.getElementById("demoA").innerHTML = faixas;
                }

                if($('#myselect').val() == "faixaB"){
                    document.getElementById("demoA").innerHTML = faixas;
                }

                if($('#myselect').val() == "faixaC"){
                    document.getElementById("demoA").innerHTML = faixas;
                }

                if($('#myselect').val() == "faixaD"){
                    document.getElementById("demoA").innerHTML = faixas;
                }

                if($('#myselect').val() == "faixaE"){
                    document.getElementById("demoA").innerHTML = faixas;
                }

                if($('#myselect2').val() == "faixaF"){
                    document.getElementById("demoA").innerHTML = genero;
                }

                if($('#myselect2').val() == "faixaG"){
                    document.getElementById("demoA").innerHTML = genero;
                }

                if($('#myselect2').val() == "faixaH"){
                    document.getElementById("demoA").innerHTML = genero;
                }

                if($('#myselect3').val() == "faixaI"){
                    document.getElementById("demoA").innerHTML = armas;
                }

                if($('#myselect3').val() == "faixaJ"){
                    document.getElementById("demoA").innerHTML = armas;
                }

                if($('#myselect3').val() == "faixaK"){
                    document.getElementById("demoA").innerHTML = armas;
                }

</script>

In VS code it says it has no errors but the code does not read the data in the json that is in another file and appears like this

inserir a descrição da imagem aqui

1 answer

1

But if you have different tracks need to store the separate values, but it is possible to reduce the number of arrays and simplify a little like this:

var faixas = { };

for(var i = 0; i < json.length; i++) {
   if (faixas[json[i].Faixa] == undefined) {
      faixas[json[i].Faixa] = [];
   }

   faixas[json[i].Faixa].push(json[i].Nome + " " + json[i].Idade + " " + json[i].Localidade);
}

Basically an object was created which is a dictionary, where the key is the name of the track. First check if there is an item with the key, otherwise it creates a blank, then do the push.

To use later just use the same key, for example:

var faixaA = faixas["faixaA"];
  • I’ve changed everything but now instead of appearing the json data appears "[Object Object]"

  • 1

    can put the code as it was in the question?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.