javascript - 从 json 数组中删除元素而不重置其长度

标签 javascript arrays json

我的问题很简单。 我正在尝试从 json 数组中删除元素。 我想知道何时删除最后一个元素以隐藏 div。所以我检查一下是否 jsonArray.Length > 0。 检查失败。 jsonArray.Length 未重置。即使删除所有元素后,它也始终保留添加到其中的元素数量。例如:如果添加 4 个元素,则 Length 仍为 4。

我将在下面发布代码。

初始化器:

var ccount = 1;
var tasks = []

将元素插入 JSON 数组:

function insertTask() {
        var out = '<div id="' + ccount + '" ><span style=" width:40px; display: inline-block; vertical-align: top; text-align:left;"><img src="../Images/iconrequestreport1.png" /></span><span style="width:160px; display: inline-block; vertical-align: top; text-align: left; font-family:Arial; font-size:small;"><div>' +
                $('#drpTrajectory').find(":selected").text() + '</div><div>Start Time: ' +
                $('#txtStartTime').val() + '</div><div>End Time: ' +
                $('#txtEndTime').val() + '</div><div>Aggregation: ' +
                $('#drpAggrInterval').find(":selected").text() +
                '</div></span><span style="width:40px; display: inline-block; vertical-align: top;"><input id="btn' + ccount +
                '" class="btnDelete" type="button" onclick="deleteTask(' + ccount + ')"/></span></div> ';
        $('#divTravelTime').append(out);
        var obj = { TaskId: ccount, TrajectoryName: $('#drpTrajectory').find(":selected").text(), StartTime: $('#txtStartTime').val(), EndTime: $('#txtEndTime').val(), Aggregation: $('#drpAggrInterval').find(":selected").text() }
tasks.push(obj)

ccount++;
$('#divTravelTimeHeader').show();
$('#divTravelTime').show();
$('#divJobSubmit').show();

if (tasks.length > 0) {
    $('#divTaskView').show();
}
else {
    $('#divTaskView').hide();
}

从 JSON 数组中删除项目的代码:

function deleteTask(tt) {
    var remID = "#" + tt;
    $(remID).remove();
    delete tasks[tt - 1];
    if (tasks.length > 0) {
        $('#divTaskView').show();
    }
    else {
        $('#divTaskView').hide();
    }
}

最佳答案

如果对数组使用delete,它将用 undefined 替换“已删除”元素,但索引将保持不变。

let arr = [1, 2]
// arr.length is 2
delete arr[1]
// arr = [1, undefined], but the length is still 2

使用splice代替

关于javascript - 从 json 数组中删除元素而不重置其长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422783/

相关文章:

javascript - 我是否必须在 Javascript 中初始化对象的每个级别?

javascript - 在不使用javascript中的split方法的情况下编写字符串拆分函数

计算数组中值为 1 的位数 - 理解其背后的代码 (C)

javascript - 保存 dat.gui 预设以动态添加控件?

javascript - 用于标签属性的 Angularjs ng-repeat 项目

javascript - 获取未旋转的旋转矩形的边界

python - 如何使用数组中的方法将date_range 转换为字符串?

ios - 返回字符串数组并填充 UILabel - Swift 3

python - 如何制作 Flask 端点?

python - 将新的键/值添加到 json 字典 python