Javascript 用于嵌套ng重复的角度唯一过滤器

Javascript 用于嵌套ng重复的角度唯一过滤器,javascript,json,angularjs,filter,unique,Javascript,Json,Angularjs,Filter,Unique,我想插入内容,这样它就可以在复选框旁边打印每个学生的位置,而不会有任何重复的位置。我的HTML如下所示: <ul ng-repeat="group in groups"> <li ng-repeat="student in group.students | unique : 'location'"> <input type="checkbox" id="location"> <label for="location" ng-rep

我想插入内容,这样它就可以在复选框旁边打印每个学生的位置,而不会有任何重复的位置。我的HTML如下所示:

<ul ng-repeat="group in groups">
  <li ng-repeat="student in group.students | unique : 'location'">
     <input type="checkbox" id="location">
     <label for="location" ng-repeat="loc in student.location | unique : 'loc'">{{loc}}</label>
  </li>
</ul>

它印的是加利福尼亚州、密歇根州和加利福尼亚州。我认为这是因为唯一列表在进入另一个组时重置。我不确定如何处理嵌套对象。有人能解释一下我做错了什么吗

您将无法在筛选器中执行此操作,因为您是正确的,每个组都会重置它。您需要先让某个东西组合这些组,然后在组合的组中循环。

您将无法在筛选器中执行此操作,因为您是正确的,每个组都会重置它。你需要先让一些东西将这些组组合在一起,然后在组合后的组中循环。

是的。这确实是因为你进入了另一个组。注意提问时使用的angular的版本也很有帮助,有时在特定版本中事情会更容易。是的。这确实是因为你进入了另一个组。注意你在提问时使用的是哪个版本的angular也很有帮助,有时在特定版本中事情会更容易。谢谢你的回答。我不完全确定解决这个问题的最佳方法是什么。我在考虑是否可以手动获取JSON数组,并使用香草javascript处理所有这些内容?Angular 1.4有一个合并的概念,这足以满足您的需要。角度合并(object1,object2);然而,我不知道你是什么版本。你可以像你说的那样使用vanilla js并组合对象。谢谢,我一定会去看看的@glocklesnar如果这是一个很好的答案,你可以标记为接受的答案,否则让我知道,如果你需要任何其他帮助。感谢回复。我不完全确定解决这个问题的最佳方法是什么。我在考虑是否可以手动获取JSON数组,并使用香草javascript处理所有这些内容?Angular 1.4有一个合并的概念,这足以满足您的需要。角度合并(object1,object2);然而,我不知道你是什么版本。你可以像你说的那样使用vanilla js并组合对象。谢谢,我一定会去看看的@glocklesnar如果这是一个很好的答案,你可以标记为接受的答案,否则让我知道,如果你需要任何其他帮助。
app.filter('unique', function() {
    return function(input, key) {
        var uniqueList = [];
        var unique = {};
        for(var i = 0; i < input.length; i++) {
            if(typeof unique[input[i][key]] == "undefined") {
                unique[input[i][key]] = "";
                uniqueList.push(input[i]);

            }
        }
        return uniqueList;
    };
});
"groups" : [
    {
        "name": "a",
        "students" : [
            {
                "student_name" : "Nate",
                "location" : "California"
            },
            {
                "student_name" : "Natalie",
                "location": "Michigan"
            },
            {
                "student_name" : "Tim",
                "location" : "California"
            }
        ]
    },
    {
        "name" : "b",
        "students" : [
            {
                "student_name" : "Brian",
                "location" : "California"
            }
        ]
    }
]