Javascript 使用带有过滤器和重复记录的Ng repeat
我用的是angularjs。我有一个包含记录和级别的数组,示例如下Javascript 使用带有过滤器和重复记录的Ng repeat,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我用的是angularjs。我有一个包含记录和级别的数组,示例如下 [{id:1,level:1,partnerId:3}, {id:3,level:1,partnerId:''}, {id:5,level:1,partnerId:6}, {id:6,level:1,partnerId:''}, {id:7,level:2,partnerId:9}, {id:9,level:2,partnerId:''}] 我在levelid上进行过滤,并获得正确的显示,除非我得到的是单个记录,如果这些记录已
[{id:1,level:1,partnerId:3},
{id:3,level:1,partnerId:''},
{id:5,level:1,partnerId:6},
{id:6,level:1,partnerId:''},
{id:7,level:2,partnerId:9},
{id:9,level:2,partnerId:''}]
我在levelid
上进行过滤,并获得正确的显示,除非我得到的是单个记录,如果这些记录已经存在一个元素,我就不希望看到这些记录(例如,按顺序显示的项目将是
[1:3][3][5:6][6][7:9][9])
但我不希望3,6,9
显示,因为其中一个已经存在。我不知道如何检查它是否已经显示,然后不显示。是否可以使用指令或css
或ng if
?如果是一个指令,我甚至不知道如何编写它。只需创建一个获取唯一值的过滤器。大概是这样的:
app.filter('unique', function() {
return function(collection, keyname) {
var output = [], keys = [];
angular.forEach(collection, function(item) {
var key = item[keyname];
if (keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
return output;
};
});
<li ng-repeat="datax in individuals | unique: 'id'"></li>
app.filter('unique',function(){
返回函数(集合、键名){
变量输出=[],键=[];
angular.forEach(集合、功能(项){
var key=项目[keyname];
if(键索引of(键)=-1){
按键。按(键);
输出推送(项目);
}
});
返回输出;
};
});
请发布您编写的代码,无需任何指令,只需在控制器中预过滤数据。