如何区分两个可观察数组?

时间:2013-12-08 02:05:34

标签: knockout.js

我有两个可以匹配项目的可观察数组。我想两个过滤这两个数组并找到唯一的项目。重复的项目可以在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();
});

1 个答案:

答案 0 :(得分:0)

在某种程度上,循环将被实现,但是如果你有下划线.js,你至少可以使用intersection方法以功能方式执行此操作:

var matchingItems = _.intersection(array1, array2);

相关问题