【问题标题】:Filter an array of objects by a property containing a substring in AngularJS通过包含AngularJS中的子字符串的属性过滤对象数组
【发布时间】:2015-11-20 10:14:54
【问题描述】:

假设我有一个像这样的数组:

array = [{
    title: "foo1",
    content: "bar1"
},{
    title: "foo2",
    content: "bar2"
},{
    title: "foo3",
    content: "bar3"
}];

现在我想过滤这个数组,使其标题包含像“3”这样的字符的对象。 所以现在我的过滤数组应该是

filteredArray = [{
    title:"foo3",
    content: "bar3"
}];

我试过了

    filteredArray = $filter('filter')(array, {
        title: "foo3"
    });

但问题是标题必须是“foo3”。如果我输入“3”,它不会过滤它,因为它不检查它是否包含它,它会寻找一个完全匹配的。

任何想法如何实现这一目标?

【问题讨论】:

    标签: javascript angularjs ionic


    【解决方案1】:

    过滤器过滤器(是的,我知道)执行包含过滤...

    我将您的代码(工作)粘贴到PLNKR 并在3 上过滤并取回标题:'foo3' 元素

    array = [{
      title: "foo1",
      content: "bar1"
    },{
      title: "foo2",
      content: "bar2"
    },{
      title: "foo3",
      content: "bar3"
    }];
    
    $scope.filteredData = $filter('filter')(array, {
      title: "3",
    });
    

    【讨论】:

    • 感谢您的澄清,我不知道我是怎么错过的。它现在按预期工作。
    【解决方案2】:

    您需要编写自己的过滤器。检查此answer,了解如何实现您想要的。

    【讨论】:

    • 谢谢,链接确实有帮助,但感谢@Brocco 意识到 $filter (filter) 做了一个包含过滤。所以无需编写自己的过滤器。
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 2017-01-28
    • 2017-08-07
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多