2016-05-06 12 views
-3

Ich habe eine riesige JSON-Daten wie unten. Jetzt muss ich filtern und alle Attribute von json Daten beziehen, die den Monat betreffen, der eingegeben wird.Wie kann ich JSON-Daten in Javascript filtern?

Meine JSON-Daten sind:

"maindata" :[ 
    { 
     "month":"multi", 
     "category":"coffee", 
     "price":50, 
     "name":"Pike Place Roast Brewed Coffee Verismo Pods", 
     "flavor":"flavored", 
     "count":5, 
     "roast":"medium", 
     "type":"regular" 
    }, 
    { 
     "month":"august", 
     "category":"coffee", 
     "price":40, 
     "name":"Starbucks VIA Ready Brew French Roast", 
     "flavor":"flavored", 
     "count":548, 
     "roast":"blonde", 
     "type":"decaffinated" 
    }, 
    { 
     "month":"multi", 
     "category":"coffee", 
     "price":50, 
     "name":"Starbucks Caffé Verona Blend, Whole Bean", 
     "flavor":"flavored", 
     "count":5, 
     "roast":"medium", 
     "type":"regular" 
    }, 
    { 
     "month":"asia-pacific", 
     "category":"coffee", 
     "price":20, 
     "name":"Starbucks Caffè Verona K-Cup Pods", 
     "flavor":"flavored", 
     "count":3, 
     "roast":"dark", 
     "type":"regular" 
    }, 
    { 
     "month":"august", 
     "category":"coffee", 
     "price":40, 
     "name":"Milk Verismo Pods", 
     "flavor":"flavored", 
     "count":233, 
     "roast":"blonde", 
     "type":"decaffinated" 
    }, 
    { 
     "month":"multi", 
     "category":"coffee", 
     "price":50, 
     "name":"Starbucks VIA Ready Brew Decaf Italian Roast", 
     "flavor":"flavored", 
     "count":5, 
     "roast":"medium", 
     "type":"regular" 
    }, 
    { 
     "month":"august", 
     "category":"coffee", 
     "price":40, 
     "name":"Guatemala Antigua Espresso Verismo Pods", 
     "flavor":"flavored", 
     "count":587, 
     "roast":"blonde", 
     "type":"decaffinated" 
    } 
] 

Kann mir jemand helfen, wie kann ich diese Arbeit bekommen?
Ich habe versucht, JSONParse-Methode zu verwenden, aber das allein reicht nicht den Zweck aus.

+0

Sollte nicht zu hart sein, welche Teile werden immer Sie stecken auf? Nit-Picks: Das ist kein JSON-Objekt, aber vielleicht ist ein Schlüssel aus einem, 'Asia-Pacific', kein Monat im Jahr. –

+0

Hallo Alexandra, ignoriere den Asien-Pazifik ab sofort. –

+1

Was hast du bisher versucht? Es könnte wirklich einfach sein, einfach das Objekt iterieren und die 'month'-Eigenschaft jedes Elements vergleichen. – Gabriel

Antwort

1

Sie könnten versuchen, Ihren Datensatz zu filtern.

Hier entspricht der Filter dem Eingabewert von 'multi';

können Sie es auf einen anderen Wert ändern (oder sogar dynamisch machen es basierend auf Benutzereingaben)

// sample data 
 
var data = { 
 
    "maindata": [{ 
 
    "month": "multi", 
 
    "category": "coffee", 
 
    "price": 50, 
 
    "name": "Pike Place Roast Brewed Coffee Verismo Pods", 
 
    "flavor": "flavored", 
 
    "count": 5, 
 
    "roast": "medium", 
 
    "type": "regular" 
 
    }, { 
 
    "month": "august", 
 
    "category": "coffee", 
 
    "price": 40, 
 
    "name": "Starbucks VIA Ready Brew French Roast", 
 
    "flavor": "flavored", 
 
    "count": 548, 
 
    "roast": "blonde", 
 
    "type": "decaffinated" 
 
    }, { 
 
    "month": "multi", 
 
    "category": "coffee", 
 
    "price": 50, 
 
    "name": "Starbucks Caffé Verona Blend, Whole Bean", 
 
    "flavor": "flavored", 
 
    "count": 5, 
 
    "roast": "medium", 
 
    "type": "regular" 
 
    }, { 
 
    "month": "asia-pacific", 
 
    "category": "coffee", 
 
    "price": 20, 
 
    "name": "Starbucks Caffè Verona K-Cup Pods", 
 
    "flavor": "flavored", 
 
    "count": 3, 
 
    "roast": "dark", 
 
    "type": "regular" 
 
    }, { 
 
    "month": "august", 
 
    "category": "coffee", 
 
    "price": 40, 
 
    "name": "Milk Verismo Pods", 
 
    "flavor": "flavored", 
 
    "count": 233, 
 
    "roast": "blonde", 
 
    "type": "decaffinated" 
 
    }, { 
 
    "month": "multi", 
 
    "category": "coffee", 
 
    "price": 50, 
 
    "name": "Starbucks VIA Ready Brew Decaf Italian Roast", 
 
    "flavor": "flavored", 
 
    "count": 5, 
 
    "roast": "medium", 
 
    "type": "regular" 
 
    }, { 
 
    "month": "august", 
 
    "category": "coffee", 
 
    "price": 40, 
 
    "name": "Guatemala Antigua Espresso Verismo Pods", 
 
    "flavor": "flavored", 
 
    "count": 587, 
 
    "roast": "blonde", 
 
    "type": "decaffinated" 
 
    }] 
 
}; 
 

 
// hard-coded - can be set to a dynamic value if need be 
 
var inputMonth = 'multi'; 
 

 
var months = data.maindata.filter(function(elem) { 
 
    if (elem.month === inputMonth) { 
 
    return elem; 
 
    } 
 
}); 
 

 
var results = {}; 
 
results['data'] = months; 
 

 
document.getElementById('myresults').innerHTML = JSON.stringify(results); 
 
//console.log(JSON.stringify(results));
<pre id='myresults'> 
 
</pre>

Verwandte Themen