Picking up data json

Asked

Viewed 54 times

0

I created a json with the data from a journal that I maintain, only now I have to create a separate entry by the proper category, by author, and the other fields, I was able to get the general data, but I cannot filter this data to its corresponding field, I will show my code and explain better.

var json = 
[
  {
        "ID":"7337",
        "TÍTULO":"ssss",
        "TIPO":"sssss",
        "NATUREZA DO TRABALHO":"",
        "CATEGORIA":"fdf",
        "SETOR EDUCACIONAL":"Educação Superior",
        "AUTORES":[
              {
                    "AUTOR":"wewew",
                    "INSTITUIÇÃO":"wewewe"
              },
              {
                    "AUTOR":"weew",
                    "INSTITUIÇÃO":"Ureerr"
              },
              {
                    "AUTOR":"sdsds",
                    "INSTITUIÇÃO":"Unicrerear"
              }
        ]
  },
  {
        "ID":"8265",
        "TÍTULO":"sddssd",
        "TIPO":"fdf",
        "NATUREZA DO TRABALHO":"Pesquisa",
        "CATEGORIA":"fdf",
        "SETOR EDUCACIONAL":"Educação Superior",
        "AUTORES":[
              {
                    "AUTOR":"teste",
                    "INSTITUIÇÃO":"Universidade de Ribeirão Preto"
              },
              {
                    "AUTOR":"teste",
                    "INSTITUIÇÃO":"Universidade de Ribeirão Preto"
              }
        ]
  },
  {
        "ID":"6216",
        "TÍTULO":"POLÍTICA",
        "TIPO":"testests",
        "NATUREZA DO TRABALHO":"textte",
        "CATEGORIA":"A - Estratégias e Políticas",
        "SETOR EDUCACIONAL":"Educação Superior",
        "AUTORES":[
              {
                    "AUTOR":"Araci Hpan",
                    "INSTITUIÇÃO":"UNIVERSIDADE "
              },
              {
                    "AUTOR":"Kelly",
                    "INSTITUIÇÃO":"Universidade "
              }
        ]
  },
  {
        "ID":"5869",
        "TÍTULO":"A EDUCAÇÃO BRASILEIRA E OS AVANÇOS NO PROCESSO DE REGULAMENTAÇÃO DO ENSINO A DISTÂNCIA",
        "TIPO":"Investigação Científica (IC)",
        "NATUREZA DO TRABALHO":"A - Planejamento ",
        "CATEGORIA":"A - Estratégias",
        "SETOR EDUCACIONAL":"Educação Superior",
        "AUTORES":[
              {
                    "AUTOR":"JAMARA C",
                    "INSTITUIÇÃO":"ISERJ"
              },
              {
                    "AUTOR":"sasa",
                    "INSTITUIÇÃO":"ewew"
              },
              {
                    "AUTOR":"s",
                    "INSTITUIÇÃO":"z"
              },
              {
                    "AUTOR":"z",
                    "INSTITUIÇÃO":"s"
              },
              {
                    "AUTOR":"Renata ",
                    "INSTITUIÇÃO":"Guia "
              },
              {
                    "AUTOR":"Almddjo",
                    "INSTITUIÇÃO":"FGF- Faculdade"
              }
        ]
  },
];

for(var i=0;i< json.length; i++){
 var html = "<tr>";
 html +="<td>"+json[i].ID+"</td>";
 html +="<td>"+json[i].TÍTULO+"</td>";
 html +="<td>"+json[i].TIPO+"</td>";
 html +="<td> <a href='trabalhos/"+json[i].ID+".pdf'>" +json[i].ID+"</td>";
 html +="</tr>";
 $('table tbody').append(html);

}

What I needed would be to filter this, for example everyone who has the same category, everyone who has the same sector and so on and show it in html, but I’m not getting it, if anyone can give me a help with this question

2 answers

1

Your JSON is an array, you can create your own helper, or use the filter method. The filter method takes an argument that is a callback function, this function will be called once for each item of your array, and you must return true if the item belongs to the filter, or false if it does not belong, i.e.:

var livrosFdf = json.filter(function(livro) {
    return livro.CATEGORIA === "fdf";
});

Or with Arrow Function:

var livrosFdf = json.filter(livro => livro.CATEGORIA === "fdf");

To search by author you would need to make a second query in the author array:

var livrosKelly = json.filter(livro => livro.AUTORES.some(autor => autor.AUTOR === "Kelly"));

1

With this code, you can organize the categories for example, but I don’t know exactly if this is the way you should go.

//source https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates
function onlyUnique(value, index, self) { 
  return self.indexOf(value) === index;
}

var categorias = json.map(function(item){
  return item.CATEGORIA
}).filter( onlyUnique );

var jsonSeparadoPorCategorias = {};

categorias.forEach(function(item){
 jsonSeparadoPorCategorias[item] = json.filter(function(i){
  return i.CATEGORIA === item;
 });
});

console.log(jsonSeparadoPorCategorias);

Browser other questions tagged

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