【问题标题】:How to use angularjs inline filter to compare complete value of a key in a json array如何使用angularjs内联过滤器比较json数组中键的完整值
【发布时间】:2019-03-28 05:53:14
【问题描述】:

我有一个 JSON 数组,想根据匹配条件从其中过滤掉一些元素。

{{ myJsonArray |过滤器:{ myKey : myValue } }}

AngularJS 中的内联过滤器的问题在于它不比较提供的键的完整值,而是比较数组中的部分值。

我没有看到可以在 HTML 中使用的内联过滤器的任何其他替代方法。

//My Json Array
$scope.myJsonArray = [
 { id : 1, myKey : "5" },
 { id : 2, myKey : "10" },
 { id : 3, myKey : "15" },
 { id : 4, myKey : "20" }
];
{{ (myJsonArray | filter : { myKey : 1 }).length }}

I 除了输出为 0 之外,因为提供给 myKey 的值不存在于数组中的任何 Json 对象中。

但实际输出似乎是 2。

原因是因为 angularjs 过滤器将提供的值 1 与 10 和 15 进行比较,并返回 true,因为这些键中确实存在 1。

我希望过滤器将键作为单个完整值进行比较,而不是作为值的一部分。

【问题讨论】:

    标签: javascript angularjs filter


    【解决方案1】:

    这是工作的:https://plnkr.co/edit/a9LR7lWpgluzufUZTzUF?p=preview

    你期待严格的平等,所以使用下面的解决方案

    {{ (myJsonArray | filter : { myKey : '15' }:true).length }}
    

    看最后的:true,用于指定严格比较。

    { myKey : '15' }:true
    

    参考https://code.angularjs.org/1.6.10/docs/api/ng/filter/filter 并查看文档中的比较器(第三个参数)

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2013-07-03
      相关资源
      最近更新 更多