2017-07-02 3 views
0

多くのjsonオブジェクトを含むJson文字列があり、各jsonにはキーがあります。JSON.parseを使用して文字列をオブジェクトに配置します。多目的なJSONオブジェクトをフィルタリングする方法

私はその後、私は次の形式

json['product1'][0].name 

に必要なものを抽出しかし、私は別の要素の値に基づいて、JSONオブジェクトのそれぞれから要素の配列を取得したいです。現在、私は以下を使用しています:

for each (var row:Object in json) { 

    if (row[0][filterElement] == filterValue) { 
     arr.push(row[0][element]); 
    } 

} 

これは良いアプローチですか?私は毎回jsonオブジェクト全体を通過しているように見えるので尋ねます。

+1

検索結果をキャッシュすることができます。または、データを一度渡してすべてのフィルター値と関連する配列を索引付けすることによって、検索結果を事前キャッシュすることができます。しかし、そうでなければあなたは正しいことをしています。秘密や隠された秘密はありません。 – Organis

答えて

0

あなたの質問が正しく理解されている場合は、.map.filterを使用するように思えます。

だから我々はオブジェクトを持っている場合、そのようなあなたがすることができ、このアレイ上

var obj = { 
    people: [ 
     {name: 'person1'}, 
     {name: 'person2'}, 
     {name: 'person3'}, 
     {name: 'person4'}, 
    ] 
}; 
あなたはその後、名前の新しい配列を作成するために .mapを使用することができます

...

var names = obj.people.map(function(person){ 
    return person.name; 
}); // ['person1', 'person2', 'person3', 'person4'] 

...などこれは明らかに初歩的な例ですが、SA .filter ...

var filter = 'person2'; 
var filteredNames = obj.people.map(function(person){ 
     return person.name; 
    }).filter(function(name){ 
     return name == filter; // if true, will push name into a name into our new array 
    }); // 'person2' 

を使用私のコンセプトはあなたの質問に適用される正確なプロパティに適用されます。お役に立てれば。

関連する問題