Filtern des JSON-Arrays mit jQuery grep()

Lesezeit: 2 Minuten

Benutzer-Avatar
RiddleMeThis

Ich habe viele Beispiele auf dieser Seite durchsucht, kann sie aber anscheinend nicht meinen Bedürfnissen anpassen. Ich muss nur einige JSON-Ergebnisse filtern grep().

Unten ist mein JSON:

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

Mit obigem Beispiel

  • Wie würde ich alle Artikel mit der Kategorie von zurückgeben? cat1 ?
  • Wie würde ich alle Artikel mit der Kategorie von zurückgeben? cat1 und id von 3 ?

Ich weiß, dass dies kein großartiges Beispiel ist, aber jede Hilfe wäre großartig! Vielen Dank!

Ich habe folgende Variationen ausprobiert

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

  • Hast du gelesen die Dokumentation? Hast du irgendetwas versucht?

    – Jason P

    16. Januar 2014 um 20:42 Uhr

  • Durchlaufen Sie alle Elemente, speichern Sie sie in einer neuen Variablen und geben Sie diese Variable zurück?

    – Mandy Schoep

    16. Januar 2014 um 20:43 Uhr


  • Ja, ich habe die Dokumentation gelesen, ich habe viele verschiedene Kombinationen des Beispiels ausprobiert, ich habe das Beispiel zu meinem Beitrag hinzugefügt.

    – RiddleMeThis

    16. Januar 2014 um 23:37 Uhr

  • Abgesehen von den verlegten console.log()ich sehe das Problem in Ihrem Beispiel nicht.

    – WynandB

    17. Januar 2014 um 4:54 Uhr

  • Scheint bei mir gut zu funktionieren: jsfiddle.net/62kx2.

    – Jason P

    17. Januar 2014 um 14:19 Uhr

Benutzer-Avatar
marko

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);

Die zurückgegebenen Daten geben ein Array von Objekten zurück, sodass Sie über den Array-Index darauf zugreifen können.

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

  • Ich hatte die console.log an der falschen Stelle, also habe ich sie nicht gesehen.

    – RiddleMeThis

    22. Juli 2014 um 1:02 Uhr

Benutzer-Avatar
Teil Raval

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>

Das $.grep() -Methode eliminiert nach Bedarf Elemente aus einem Array, sodass nur die verbleibenden Elemente eine bestimmte Suche tragen. Der Test ist eine Funktion, der ein Array-Element und der Index des Elements innerhalb des Arrays übergeben werden. Nur wenn der Test wahr zurückgibt, befindet sich das Element im Ergebnisarray.

1256400cookie-checkFiltern des JSON-Arrays mit jQuery grep()

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy