Javascript AngularJS ng在删除对象中的重复关键点时出现重复问题

Javascript AngularJS ng在删除对象中的重复关键点时出现重复问题,javascript,angularjs,angularjs-ng-repeat,angular-ui,Javascript,Angularjs,Angularjs Ng Repeat,Angular Ui,如果属性相同,我尝试使用ng repeat重复其余数据。这听起来可能不清楚,所以这里有一个例子 JSON示例,这是一个书籍数组 [{"Genre":Sci-fic,"Name":"Bookname1"}, {"Genre":Sci-fic,"Name":"Bookname2"}, {"Genre":Non sci-fic,"Name":"Bookname3"}, {"Genre":Non sci-fic,"Name":"Bookname4"}] 因此,如果这本书属于同一流派,

如果属性相同,我尝试使用
ng repeat
重复其余数据。这听起来可能不清楚,所以这里有一个例子

JSON示例,这是一个书籍数组

[{"Genre":Sci-fic,"Name":"Bookname1"},
 {"Genre":Sci-fic,"Name":"Bookname2"},
 {"Genre":Non sci-fic,"Name":"Bookname3"},    
 {"Genre":Non sci-fic,"Name":"Bookname4"}]  
因此,如果这本书属于同一流派,那么我们会将流派类型作为手风琴的标题,并列出其流派的其他属性,而不重复标题。我遇到的问题是,由于对象的json数组来自数据模型,如果不重复流派类型,我就无法真正过滤类型

这是我正在做的,我想把标题作为一本书。风格,在手风琴组中,会有所有以标题为风格的书的列表


之所以发生这种情况,是因为您在使用track by的generes中获得了重复的值

  <div ng-repeat="genere in generes track by $index"></div>

我也没能解决这个问题。。。我能想到的最好的解决方案是在将该模型添加到您的范围之前简单地去掉重复项

使用您的JSFIDLE示例

var books = [
             {"Genre":"Sci-fic", "Name":"Bookname1"},
             {"Genre":"Sci-fic", "Name":"Bookname2"},
             {"Genre":"Non sci-fic", "Name":"Bookname3"},    
             {"Genre":"Non sci-fic", "Name":"Bookname4"}
               ];

var unique = [],
    blocked = [];

unique.push(books[0]);
blocked.push(books[0].Genre);

for (var i = 1; i < books.length; i++) {
    if (blocked.indexOf(books[i].Genre) <= -1) {
        unique.push(books[i]);
        blocked.push(books[i].Genre);
    }
}

$scope.Books = books; 
// [{Genre: "Sci-fic", Name: "Bookname1"}, 
//  { Genre: "Non sci-fic", Name: "Bookname3" }];
var书籍=[
{“流派”:“科学”、“名称”:“书名1”},
{“流派”:“科学”、“名称”:“书名2”},
{“流派”:“非科学”,“名称”:“书名3”},
{“流派”:“非科学”,“名称”:“书名4”}
];
var unique=[],
阻塞=[];
唯一。推送(books[0]);
阻止。推送(书籍[0]。流派);
for(var i=1;iif(blocked.indexOf(books[i].Genre)所以我找到了一个适合我的解决方案。我遵循了这一点。我对我的数据模型做了一些更改,但想法是一样的。

你能发布你的ng repeat表达式吗?书在哪里?数据模型应该帮助你:所以你的问题缺少很多信息,首先你使用的是一个指令分组你的数据,等等…你应该在询问时发布这些信息,以便更好地帮助你。我建议发布一个提琴,让事情变得清晰,直到无法解决问题…我自己也在为这一点挣扎了一段时间。是否可以将体裁保留为标题之一,或者我应该将其用作过滤器,然后对体裁执行同样的操作?
angular.module('app', [])

function ParentCtrl($scope) {
    var books = [{
        "Genre": "Sci-fic",
            "Name": "Bookname1"
    }, {
        "Genre": "Sci-fic",
            "Name": "Bookname2"
    }, {
        "Genre": "Non sci-fic",
            "Name": "Bookname3"
    }, {
        "Genre": "Non sci-fic",
            "Name": "Bookname4"
    }];

    $scope.model = _.groupBy(books, 'Genre');

}
var books = [
             {"Genre":"Sci-fic", "Name":"Bookname1"},
             {"Genre":"Sci-fic", "Name":"Bookname2"},
             {"Genre":"Non sci-fic", "Name":"Bookname3"},    
             {"Genre":"Non sci-fic", "Name":"Bookname4"}
               ];

var unique = [],
    blocked = [];

unique.push(books[0]);
blocked.push(books[0].Genre);

for (var i = 1; i < books.length; i++) {
    if (blocked.indexOf(books[i].Genre) <= -1) {
        unique.push(books[i]);
        blocked.push(books[i].Genre);
    }
}

$scope.Books = books; 
// [{Genre: "Sci-fic", Name: "Bookname1"}, 
//  { Genre: "Non sci-fic", Name: "Bookname3" }];