web-dev-qa-db-fra.com

Filtrage d'un tableau JSON à l'aide de jQuery grep ()

J'ai cherché beaucoup d'exemples sur ce site mais je n'arrive pas à les adapter à mes besoins. J'ai juste besoin de filtrer certains résultats JSON en utilisant grep() .

Ci-dessous mon JSON:

var data = { "items": [
    {
        "id":       1,
        "category": "cat1"
    },
    {        
        "id":       2,
        "category": "cat2"
    },
    {
        "id":       3,
        "category": "cat1"
    }
]}


Avec l'exemple ci-dessus

  • comment puis-je retourner tous les articles avec la catégorie de cat1?
  • comment puis-je retourner tous les articles avec la catégorie de cat1 et id sur 3?

Je sais que ce n'est pas un bon exemple, mais toute aide serait géniale! Merci!

J'ai essayé des variantes du suivant

data.items = $.grep(data.items, function(element, index) {
    return element.id == 1;
    console.log(data.items);
});
37
RiddleMeThis
var data = {
    "items": [{
        "id": 1,
        "category": "cat1"
    }, {
        "id": 2,
        "category": "cat2"
    }, {
        "id": 3,
        "category": "cat1"
    }]
};

var returnedData = $.grep(data.items, function (element, index) {
    return element.id == 1;
});


alert(returnedData[0].id + "  " + returnedData[0].category);

ReturnData renvoie un tableau d'objets afin que vous puissiez y accéder par index de tableau.

http://jsfiddle.net/wyfr8/913/

51
marko
var data = {
  "items": [{
    "id": 1,
    "category": "cat1"
  }, {
    "id": 2,
    "category": "cat2"
  }, {
    "id": 3,
    "category": "cat1"
  }, {
    "id": 4,
    "category": "cat2"
  }, {
    "id": 5,
    "category": "cat1"
  }]
};
//Filters an array of numbers to include only numbers bigger then zero.
//Exact Data you want...
var returnedData = $.grep(data.items, function(element) {
  return element.category === "cat1" && element.id === 3;
}, false);
console.log(returnedData);
$('#id').text('Id is:-' + returnedData[0].id)
$('#category').text('Category is:-' + returnedData[0].category)
//Filter an array of numbers to include numbers that are not bigger than zero.
//Exact Data you don't want...
var returnedOppositeData = $.grep(data.items, function(element) {
  return element.category === "cat1";
}, true);
console.log(returnedOppositeData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id='id'></p>
<p id='category'></p>

La méthode $.grep() élimine les éléments d'un tableau si nécessaire, de sorte que seuls les éléments restants effectuent une recherche donnée. Le test est une fonction à laquelle sont attribués un élément de tableau et l'index de l'élément dans le tableau. Ce n'est que si le test renvoie vrai que l'élément sera dans le tableau de résultats.

0
Parth Raval