Add values in the array from a JSON that has the value of a variable

Asked

Viewed 58 times

1

I created a variable called arrayFaixaD:

var arrayFaixaD = new Array();

and created a for which reads the entire JSON file:

for(var i = 0; i < json.length; i++)

within that for I put some if:

if(json[i].Faixa == "faixaD"){
   arrayFaixaD[1] = json[i].Nome;
   arrayFaixaD[2] = json[i].Idade;
   arrayFaixaD[3] = json[i].Localidade;
}

then wrote this if into it by the full functions of the option:

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

That one if makes you write the information within a paragraph identified with a id:

<p id="demoA"></p> 

and everything is working. The problem is that within JSON there is more than one array with the faixaD:

{
        "id": "1",
        "Nome": "Lucia Rodrigues",
        "Idade": "48",
        "Localidade": "Lagoa",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "2",
        "Nome": "Nome Desconhecido",
        "Idade": "46",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Sim"
    },
    {
        "id": "4",
        "Nome": "Maria Eufrázia",
        "Idade": "83",
        "Localidade": "Terena",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "5",
        "Nome": "Luzia Rosado",
        "Idade": "80",
        "Localidade": "Terena",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "6",
        "Nome": "Fernanda",
        "Idade": "70",
        "Localidade": "Oeiras",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "7",
        "Nome": "Nome Desconhecido",
        "Idade": "48",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "9",
        "Nome": "Helena Cabrita",
        "Idade": "60",
        "Localidade": "Cruz de Pau",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Não"
    },
    {
        "id": "11",
        "Nome": "Fernando Cruz",
        "Idade": "60",
        "Localidade": "Porto",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "12",
        "Nome": "Ana Maria Silva",
        "Idade": "53",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "13",
        "Nome": "Ana Paula",
        "Idade": "40",
        "Localidade": "Salamonde",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Não"
    }

But he only writes one person and I wanted him to write if all these people are inside the faixaD. How can I arrive at that result?

  • 4

    Please improve the title of your question. "Code help" is a bad title and does not portray the context of the question. It may be interesting to read How to choose a good title?

1 answer

2


What you need to do is a .push() (add values in the array). As you are doing, you are creating and overwriting the positions [1], [2] and [3] of the array, and at the end of the loop only the last JSON object will remain, whose value of Nome is "Ana Paula", and will still lack the position [0] of the array (every array starts from [0]).

In the case of .innerHTML, the result will be that it will print on p#demoA all values of the semicolon-separated array. As in the question you do not explain how you want the result, this is the solution:

var json = [{
        "id": "1",
        "Nome": "Lucia Rodrigues",
        "Idade": "48",
        "Localidade": "Lagoa",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "2",
        "Nome": "Nome Desconhecido",
        "Idade": "46",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Sim"
    },
    {
        "id": "4",
        "Nome": "Maria Eufrázia",
        "Idade": "83",
        "Localidade": "Terena",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "5",
        "Nome": "Luzia Rosado",
        "Idade": "80",
        "Localidade": "Terena",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "6",
        "Nome": "Fernanda",
        "Idade": "70",
        "Localidade": "Oeiras",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "7",
        "Nome": "Nome Desconhecido",
        "Idade": "48",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "9",
        "Nome": "Helena Cabrita",
        "Idade": "60",
        "Localidade": "Cruz de Pau",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Não"
    },
    {
        "id": "11",
        "Nome": "Fernando Cruz",
        "Idade": "60",
        "Localidade": "Porto",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "12",
        "Nome": "Ana Maria Silva",
        "Idade": "53",
        "Localidade": "Ilha Terceira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "???"
    },
    {
        "id": "13",
        "Nome": "Ana Paula",
        "Idade": "40",
        "Localidade": "Salamonde",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Tribunal": "Não"
    }];
    

$("#myselect").on("change", function(){
 
   var arrayFaixaD = new Array();

   for(var i = 0; i < json.length; i++){
   
      if(json[i].Faixa == "faixaD"){
         arrayFaixaD.push(json[i].Nome, json[i].Idade, json[i].Localidade);
      }
   }
   if($('#myselect').val() == "faixaD"){
      document.getElementById("demoA").innerHTML = arrayFaixaD;
   }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="myselect">
   <option value="">Selecione...</option>
   <option value="faixaD">faixaD</option>
</select>
<p id="demoA"></p>

  • Thanks for the help Sam!

Browser other questions tagged

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