繁体   English   中英

Angular $ filter用于对JSON响应中的数组进行深度过滤

[英]Angular $filter for deep filtering in arrays inside JSON response

我想过滤对象结构有点复杂的对象。 我正在寻找一种深度过滤,其中angular $ filter在数组内部的元素上起作用:

[
  {
    "schoolId": 12345,
    "schoolName": "ZXCVB",
    "classes": [
      {
        "classId": "C1",
        "students": 50
      },
      {
        "classId": "C2",
        "students": 100
      }
    ]
  },

  {
    "schoolId": 98765,
    "schoolName": "QWERTY",
    "classes": [
      {
        "classId": "C1",
        "students": 100
      },
      {
        "classId": "C2",
        "students": 50
      }
    ]
  }
]



(这是一所学校。每所学校都有一系列班级,每个班级都有ID)
在这里,我正在寻求帮助的是如何对classId进行过滤,以使其返回我的学校对象。

您应该使用自定义过滤器 ,定义自己的过滤器功能。 例:

.filter('classFilter', [function () {
    return function (input, classId) {
        if(!classId) return input;
        var out = [];
        input.forEach(function(s) {
            s.classes.forEach(function(c){
            if(c.classId==classId) out.push(s);
          })
        });
        return out;
    };
}]);

直播: http//jsfiddle.net/87yod9bf/2/

可以filtersome

function filterByClassId(schools, id){
    return schools.filter(function(school){
        return school.classes.some(function(c){
            return c.classId === id;
        });
    });
}

如果您要将其设置为angular过滤器,则取决于您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM