当前位置: 首页 > 面试题库 >

如何在angularJS中按对象属性过滤

卢骏俊
2023-03-14
问题内容

我试图在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)”语句中不会打印任何内容。似乎我没有插入正确的参数来访问“极性”的对象属性。

有任何想法吗?非常感谢您的回复。


问题答案:

您只需要使用filter过滤器(请参阅文档):

<div id="totalPos">{{(tweets | filter:{polarity:'Positive'}).length}}</div>
<div id="totalNeut">{{(tweets | filter:{polarity:'Neutral'}).length}}</div>
<div id="totalNeg">{{(tweets | filter:{polarity:'Negative'}).length}}</div>

[Fiddle](http://jsfiddle.net/rAFjL/)



 类似资料:
  • 我有一个像下面这样的数组 现在我有了一个73如何从数组中选择这个特定的对象。我明白了,我可以在jQuery中用grep轻松实现这一点,有没有什么方法可以做到这一点? 由于大多数使用angular开发应用程序的用户总是从对象数组(主要用于表格)获取数据,因此应该有一个辅助函数来实现这一点? 这样我就可以通过更新对象的数组用行的ID来更改行的数据。 我不想把这件事牵扯进来。我想操作数据,并用函数更新数

  • 我怎么能找到一个对象,,在

  • 我如何删除Linkedlist中的对象。我有一个类帐户,里面有学生ID和学生名称。我输入列表中的对象,但是当我试图删除时,我不知道如何做。因为每次你从列表中间删除一个元素,它就会变得有组织,这意味着索引会改变。所以我如何获得学生ID属性并删除LinkedList中的对象。 样本: 我想让用户插入他想要删除的studentId,我可以做一个搜索和删除该对象的代码。 每次我从中间删除一个对象,它就会改

  • 问题内容: 如果我有一个对象数组,并且想将Angular模型绑定到基于过滤器的元素之一的属性,该怎么做?我可以用一个具体的例子更好地解释: HTML: 控制器: JSBin:http://jsbin.com/adisax/1/edit 我想将第二个输入过滤为具有’C’等级的主题,但是我不想将模型绑定到该 等级 ;我想将其绑定到等级为“ C”的主题的 标题 。 这可能吗?如果可以,怎么做? 问题答案

  • 问题内容: 如何转换为: 到这个: 使用javascript或下划线 问题答案: 假设原始列表包含在名为的变量中:

  • 问题内容: 存在一个包含许多对象的数组。通过属性在此数组中查找一个或多个对象所必需。 输入obj: 输出结果:(以值4搜索“开始”) 问题答案: _findItemByValue(Obj,“开始”,4); 与除IE6,IE7,IE8以外的所有版本兼容,但存在polyfill。