我正在使用 javascript 和 Knockout.js,并且我有 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.timesheets 中也在 self.selectedtimesheets 中的元素,但我在思考如何执行此操作时遇到了障碍:
我知道应该有类似的东西
self.timesheets.remove(function (el) {
// ????
});
但我就是想不出到底该怎么做。
最佳答案
以编程方式,您希望迭代 self.timesheets 数组并将每个项目的 id 与 self.selectedtimesheets 中的 id 进行比较。如果 ID 匹配,您希望从 self.timesheets 中删除该项目。
或者将两个数组中的所有项目插入一个新数组并删除重复项。
但是由于您使用的是 Knockout,如果您运行compareArrays 实用程序函数:
var differences = ko.utils.compareArrays(self.timesheets, self.selectedtimesheets);
差异现在将是仅包含不同值的数组。
关于Javascript 从基于另一个数组的数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035706/