Javascript基于另一个数组从数组中删除元素

时间:2015-06-24 19:50:01

标签: javascript arrays knockout.js

我正在使用带有knockout.js的javascript,我有2个数组:

self.timesheets = ko.observableArray();
self.selectedTimesheets = ko.observableArray();

我按如下方式加载时间表数据:

$.ajax({
    url: '/api/Invoice/GetPendingTimesheets',
    type: 'GET',
    success: function (timesheetData) {
        self.timesheets(timesheetData);
    }
});

时间表的定义如下:

 public class Timesheet
    {
       public  int Id { get; set; }
       public  DateTime WeekStart { get; set; }
    }

selectedTimesheets数组会跟踪已选择的复选框

我想要做的是删除self.timeslectedheets中的self.timesheets中的元素,我有一个心理障碍,想出如何做到这一点:

我知道应该有像

这样的东西
self.timesheets.remove(function (el) {
               // ????
            });

但我真的想不出怎么做。

1 个答案:

答案 0 :(得分:1)

以编程方式,您希望遍历self.timesheets数组并将每个项目的id与self.selectedtimesheets中的ID进行比较。如果ids匹配,您想要从self.timesheets中删除该项目。

或者将两个阵列中的所有项目推送到一个新阵列中并删除重复项。

但是因为你正在使用Knockout,所以如果运行compareArrays实用程序函数:

    var differences = ko.utils.compareArrays(self.timesheets, self.selectedtimesheets);

差异现在只是不同值的数组。