特定のプロパティの値でオブジェクトのリストをフィルターするカスタムフィルターをAngularJSで作成しようとしています。この場合、「極性」プロパティ(「正」、「中性」、「負」の可能な値)でフィルタリングしたいと思います。
フィルターなしの私の作業コードは次のとおりです。
HTML:
<div class="total">
<h2 id="totalTitle"></h2>
<div>{{tweets.length}}</div>
<div id="totalPos">{{tweets.length|posFilter}}</div>
<div id="totalNeut">{{tweets.length|neutFilter}}</div>
<div id="totalNeg">{{tweets.length|negFilter}}</div>
</div>
以下は、JSON形式の "$ scope.tweets"配列です。
{{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"}}
私が思いつくことができる最高のフィルターは次のとおりです:
myAppModule.filter('posFilter', function(){
return function(tweets){
var polarity;
var posFilterArray = [];
angular.forEach(tweets, function(tweet){
polarity = tweet.polarity;
console.log(polarity);
if(polarity==='Positive'){
posFilterArray.push(tweet);
}
//console.log(polarity);
});
return posFilterArray;
};
});
このメソッドは空の配列を返します。また、「console.log(polarity)」ステートメントからは何も出力されません。「極性」のオブジェクトプロパティにアクセスするための正しいパラメーターを挿入していないようです。
何か案は?ご返信をお待ちしております。
3
いい質問ですが、コードを減らすことができます。その大部分は質問には関係ありません。
—
setec