我有两个可以匹配项目的可观察数组。我想两个过滤这两个数组并找到唯一的项目。重复的项目可以在ID属性上匹配。
有没有办法在不必创建嵌套循环的情况下完成此操作,我担心这种方法对页面性能的影响。
目前我正在通过以下方式进行操作,如果您知道更好的方式,请随时分享。
self.alerts = ko.computed(function () {
var duplicates = [];
var alerts = ko.mapping.fromJS(ko.toJS(Neptune.SonarAlerts.alerts()));
ko.utils.arrayForEach(self.selectedAlerts(), function(selected) {
var duplicate = ko.utils.arrayFirst(alerts(), function(item) {
return selected.ID() == item.ID();
});
if (duplicate != null) {
duplicates.push(duplicate);
}
});
alerts.removeAll(duplicates);
return alerts();
});
答案 0 :(得分:0)
在某种程度上,循环将被实现,但是如果你有下划线.js,你至少可以使用intersection方法以功能方式执行此操作:
var matchingItems = _.intersection(array1, array2);