2016-05-06 8 views
-3

私は以下のような巨大なJSONデータを持っています。今度は、入力した月に関連するjsonデータのすべての属性をフィルタリングして取得する必要があります。javascriptでJSONデータをフィルタリングするにはどうすればよいですか?

私のJSONデータは次のとおりです。

"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" 
    } 
] 

誰もが、私はこの作業を取得することができますどのように私を助けることができますか?
私はJSONParseメソッドを使用しようとしましたが、それだけでは目的がありません。

+0

はハードにすべきではない、どのような部品は、あなたに立ち往生していますか? Nitの選択:これはJSONオブジェクトではなく、おそらく1つのキーであり、asia-pacificは今年の1か月ではありません。 –

+0

こんにちはアレクサンドラ、今のアジア太平洋を無視してください。 –

+1

あなたはこれまでに何を試しましたか?これは本当に簡単なことです。オブジェクトを反復し、各要素の 'month'プロパティを比較するだけです。 – Gabriel

答えて

1

データセットをフィルタリングすることができます。

ここで、フィルタは 'multi'の入力値と一致します。

あなたには、いくつかの他の値に変更(あるいはユーザの入力に基づいて、それを動的にする)ことができます

// 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>

関連する問題