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

标签 javascript arrays knockout.js

我正在使用 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/

相关文章:

javascript - Axios POST 的发送状态和数据未显示在 req.body 中

javascript - EaselJS中获取直线的起点和终点

javascript - 如何按索引合并数组中的每个对象?

c - 使用递归函数,证明数组正在增长

javascript - Knockout.js foreach 循环中的 If 条件

javascript - Bootstrap 音频播放器的列布局

javascript - ES6 生成器 - 第一个 next() 没有 yield 表达式的示例

arrays - 如果你可以在 7 次比较中对 5 个数字进行排序,那么如何在 10 次比较中对 6 个数字进行排序?

javascript - 如何将从 json 接收到的 ko.observable 字符串解析为整数(数字)值

javascript - 无法将数据从 Sammy 传递到 knockout 模板