【发布时间】:2017-01-02 07:43:52
【问题描述】:
谁能解释一下这个sn-p代码,它是一个角度过滤器,模块名称为ui.filters。
angular.module('ui.filters').filter('unique', function () {
return function (items, filterOn) {
if (filterOn === false) {
return items;
}
if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {
var hashCheck = {}, newItems = [];
var extractValueToCompare = function (item) {
if (angular.isObject(item) && angular.isString(filterOn)) {
return item[filterOn];
} else {
return item;
}
};
angular.forEach(items, function (item) {
var valueToCheck, isDuplicate = false;
for (var i = 0; i < newItems.length; i++) {
if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
newItems.push(item);
}
});
items = newItems;
}
return items;
};
});
【问题讨论】:
-
此过滤器返回不同的对象列表。
-
那你需要什么样的解释?一行一行?
-
Melzar 先生,我知道它会返回不同的对象列表。如果可能的话,我需要详细的逐行解释。无论如何,感谢您的回复 Mr.Melzar。
-
好的,我可以看到有人已经这样做了:)
-
好的,谢谢Melzar先生的回复。
标签: javascript arrays angularjs