2017-07-18 10 views
0

は、あなたが以下のようなJSONを持っているとしましょう:特定の値を含むすべてのJSONオブジェクトを選択する方法はありますか?

[{ 
    "Rarity": "Common", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }, 
{ 
    "Rarity": "Common", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }, 
{ 
    "Rarity": "Rare", 
    "EffectOne": "+4 ACC", 
    "EffectTwo": "-1 SPD", 
    "EffectThree": "", 
    }] 

どのような"Rarity": "Common"などのプロパティの1の共有値を持つオブジェクトを、ターゲットにすることができます。

できますか(この例では、このJSONの名前はデータです):data.rarity.common?それともdata.rarity("Common")でしょうか。私が尋ねる理由は、実際にはJSON jqueryのドキュメントのどこにでもこの情報を見つけることができないようなので、特定の値に基づいて別の場所にデータを設定したいと思っています。

+2

あなたはJSONでいくつかの余分なコンマを持っています。主にライブラリやフレームワーク(オブジェクト、配列、プロパティなど)を必要とせずに、jQueryのドキュメントで必要な情報を見つけられない可能性があります。これはプレーンJSのすべての基本です。 '' Rarity ': "Common"を持つオブジェクトだけに配列を絞りたい場合、主に 'data = data.filter(x => x.Rarity ==" Common ")というオプションがあります。 '[** An Example **](https://jsfiddle.net/od78u3xo/) – Santi

+0

ブーム、本当にありがとう!私はこの情報を見つけることができなかった。とても有難い! – dbrree

+2

問題ありません。デモンストレーションするために[例](https://jsfiddle.net/od78u3xo/)を追加しました。また、明らかにするために、あなたが 'data.'を行うことができない理由は、データが*配列*であるからです。これはプロパティを持ちませんが、インデックスを持ちます。私が提供した 'filter'関数は各項目を(' x'として)反復し、与えられた条件を評価します( 'x.Rarity ==" Common "')。結果が 'false'の場合、項目は配列から削除されます。 – Santi

答えて

2

ここでは、JavaScriptを使用しています。変数common_valueは、希少性のフィルタとしてCommonに設定されています。これはあなたが探しているものですか?

var json = [{ 
 
    "Rarity": "Common", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }, 
 
{ 
 
    "Rarity": "Common", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }, 
 
{ 
 
    "Rarity": "Rare", 
 
    "EffectOne": "+4 ACC", 
 
    "EffectTwo": "-1 SPD", 
 
    "EffectThree": "", 
 
    }]; 
 

 
var common_value = "Common"; 
 
var results = []; 
 

 
for(var i = 0; i < json.length; i++){ 
 
\t if(json[i].Rarity === common_value){ 
 
    \t results.push(json[i]); 
 
    } 
 
} 
 

 
console.log(results);

+0

パーフェクト!本当にありがとう! – dbrree

+0

あなたを歓迎します。 ".Rarity"をフィルタを制御するのに好きなキーに変更することができます:-) – hallleron

関連する問題