添加新值并删除数组中先前添加的值 (Javascript)

Add new value and remove previously added value in an array (Javascript)

我目前正在为我的项目使用 DataTables 插件。

我有一个 AJAX 源数据table,你只能有一行 selected,因为我的数据table 是在服务器端完成的需要在更改页面时跟踪select编辑了哪一个。

因此我一直在使用 this solution 但这似乎只适用于多行 selection

现在基本上我想要发生的是,当你 select 一个新行时,它应该将新的行 ID 添加到数组中,但也从数组中删除以前添加的行 ID,所以应该只一次在数组中只有一个结果。

视觉上更好地理解:

var selected = []

加载后点击第1行table = [row_1]

单击第 2 行删除 row_1 并添加 row_2 = [row_2]

var selected = [];

$("#example").DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": "scripts/ids-arrays.php",
    "rowCallback": function( row, data ) {
        if ( $.inArray(data.DT_RowId, selected) !== -1 ) {
            $(row).addClass('selected');
        }
    }
});

$('#example tbody').on('click', 'tr', function () {
    var id = this.id;
    var index = $.inArray(id, selected);

    if ( index === -1 ) {
        selected.push( id );
    } else {
        selected.splice( index, 1 );
    }

    $(this).toggleClass('selected');
} );

您可以替换整个数组,而不是向数组中添加一个元素。用数组来存储单个元素似乎有点浪费,但是就这样吧。

selected.push( id );

变成

selected = [id];