2016-07-13 6 views
1

this postの回答が受け入れられ、JS Fiddleが含まれているため、jQuery.grep()を使用してデータをフィルタできることを確認できました。しかし、サーバーからの出力を使ってエフェクトを再現することはできません。私は、オブジェクトの参照で明白な何かを見落としていると思うが、JavaScriptを初めて使う人には、私のためにそれを指摘する必要があると思う。jQuery.grep()でフィルタリングするJSONオブジェクトの参照

これは私のデータ出力、オブジェクトの配列である:私は、カテゴリF内のエントリをフィルタリングするために、次のコードを使用し

[{"id":"3","src":"url1","category":"A"}, 
{"id":"32","src":"url2","category":"D"}, 
{"id":"38","src":"url3","category":"E"}, 
{"id":"39","src":"url4","category":"E"}, 
{"id":"42","src":"url5","category":"F"}, 
{"id":"49","src":"url6","category":"B"}, 
{"id":"44","src":"url7","category":"F"}] 

var obj = [{"id":"3","src":"url1","category":"A"}, 
 
{"id":"32","src":"url2","category":"D"}, 
 
{"id":"38","src":"url3","category":"E"}, 
 
{"id":"39","src":"url4","category":"E"}, 
 
{"id":"42","src":"url5","category":"F"}, 
 
{"id":"49","src":"url6","category":"B"}, 
 
{"id":"44","src":"url7","category":"F"}]; 
 

 
obj = $.grep(obj, function(element, index){ 
 
    return element.category == "F" // keep elements in category F 
 
}); 
 

 
console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

これは私ですサーバーへのAjaxコール:

var obj = $.post(url, {term: term }, function(data){ 
}, 'json' 
); 

console.log(obj);を実行すると、自分のデータがコンソールでObjectとして出力されていますが、そのデータは表示されません。 grep関数が機能するためには、オブジェクトの配列として出力にアクセスする必要があります。そこには、私を待っていますが、どうすればそれを参照できますか?

+0

内の応答データにアクセスする必要は約束しませ応答データ

ですオブジェクトの配列です。 [MDN配列](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Accessing_array_elements) – destoryer

+0

文字列の比較を行うときは、常に三重等号(===)を使用します。 –

+0

@Samuel、なぜ===ではない==?どちらも私のケースではうまくいくようです。 – guiltybyintent

答えて

1

あなたは:

var obj = $.post(url, {term: term }, function(data){ 
}, 'json'); 

objはgrep` `の結果あなたは成功コールバック

$.post(url, {term: term }, function(data){ 
    var obj = $.grep(data, function(element, index){ 
     return element.category == "F" // keep elements in category F 
    }); 
    console.log(obj);  
}, 'json'); 
+0

ありがとう、@茶葉!私はこれに単純な解決策がなければならないことを知っていた... – guiltybyintent

+0

ajaxは非同期であることを覚えておいてください – charlietfl

+0

詳細を教えてください。この場合、非同期呼び出しの意味は何ですか? – guiltybyintent

関連する問題