当前位置: 首页 > 知识库问答 >
问题:

如何按空数组的属性进行筛选?

公羊瀚
2023-03-14

我有这个在重复播放

<tr ng-repeat="website in websites">
    <td>{{website.url}}</td>
</tr>

来自网站数组的每个网站对象如下所示:

{
  url: "example.com",
  groups: []
}

问题:如何将过滤器应用于上述循环,使其仅显示group属性为空数组的元素

我尝试过的事情:

data-ng-repeat="website in websites | filter: {groups: []}"
data-ng-repeat="website in websites | filter: !groups.length"
data-ng-repeat="website in websites | filter: groups.length === 0"

(控制台中没有错误,但会过滤掉所有内容)

data-ng-repeat="website in websites | filter: {groups: ''}"

(与我想要的相反,只显示组不是空数组的项目)

data-ng-repeat="website in websites | filter: {groups: null}"

(如果我用null代替[]来表示没有值,这是可行的,但看起来真的很混乱……因为我需要经常注意组属性变为空,并手动将其设置为null)

共有2个答案

连乐
2023-03-14

您可以像这样使用比较器参数。

<tr ng-repeat="website in websites | filter:{groups: []}:true">
    <td>{{website.url}}</td>
</tr>

Angularjs官方文件描述了真实的含义。

true:函数(实际,预期){返回角度。等于(实际,预期)}的简写。这本质上是对预期和实际的严格比较。

JSFIDLE在这里。

岑俊明
2023-03-14

我在控制器中添加了一个过滤器功能:

JS公司:

angular.module('myApp', [])
  .controller('myController', ['$scope',
    function($scope) {
      $scope.friends = [{
        name: 'John', phone: '555-1276', a: [1, 2, 3]
      }, { name: 'Mary',  phone: '800-BIG-MARY',  a: [1, 2, 3]
      }, { name: 'Mike', phone: '555-4321',  a: null
      }, { name: 'Adam', phone: '555-5678', a: []
      }, { name: 'Julie', phone: '555-8765', a: []
      }, { name: 'Juliette', phone: '555-5678', a: []
      }];

      $scope.filterFn = function(item) {
        // must have array, and array must be empty
        return item.a && item.a.length === 0;
      };

    }
  ]);

在您的模板中:

<table>
  <tr><th>Name</th><th>Phone</th><th>array len</th></tr>
  <tr ng-repeat="friend in friends | filter: filterFn">
    <td>{{friend.name}}</td>
    <td>{{friend.phone}}</td>
    <td>{{friend.a.length}}</td>
  </tr>
</table>

修改的角度过滤器doc plnkr

 类似资料:
  • 问题内容: 比方说你有一个的对象。 如果它们都具有int GoalScored变量,则如何排序?你如何按GoalScored排序? 问题答案: 你可以使用Collections.sort自定义Comparator 。 比较部分也可以这样写: 或者,你可以制作。这定义了所有对象的自然顺序。使用a 更灵活,因为不同的实现可以按名称,年龄等进行排序。

  • 我想通过作为字符串的属性名筛选类的集合。假设我有一个名为Person的类,我有它的一个集合,或者是IEnumerable或者是List,我想过滤这个集合,但是我不知道确切的过滤器,我的意思是我不能使用: 让我举一个例子。

  • 问题内容: 我想创建一个通用函数来根据传递的属性对类数组进行排序。 例如,我有这些课程 这些数组 如何为数组编写通用扩展名,以便根据传递的属性对其进行排序?(例如,persons.sort(名称)或cars.sort(制造商)) 谢谢! 问题答案: 干得好: 用法: 这是一个不变的版本: 正如Leo Dabus指出的那样,您可以将扩展名概括为以下内容:

  • 问题内容: 在Swift 2.0中,您将如何按属性对自定义对象数组进行排序?我知道在Swift 1.2中,这是使用sorted()和sort()完成的。但是,这些方法在Xcode 7 beta 4中不再起作用。谢谢! 例如: 问题答案: 在Swift 2中: 您可以使用方法,使用来比较两个日期: 或者,如果您想对原始数组进行排序,则可以: 在Swift 3中 返回数组的排序形式,请使用,而不是 排

  • 问题内容: 我已经使用AJAX获得了以下对象并将它们存储在数组中: 如何仅使用JavaScript 创建一个函数以按属性 升序 或 降序 对对象进行排序? 问题答案: 按价格升序对房屋进行排序: 或在ES6版本之后:

  • 本文向大家介绍JavaScript对象数组如何按指定属性和排序方向进行排序,包括了JavaScript对象数组如何按指定属性和排序方向进行排序的使用技巧和注意事项,需要的朋友参考一下 引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了。对数据进行排序是必不可少的功能。排序可以分为按单个字段排序和按多个字段不同排序方向排序。单字段排序局限性较大,不能满足用户对数据的关注点变化的