如果不知道索引值,如何通过索引从数组中删除项?

时间:2016-11-01 07:24:46

标签: javascript arrays

我有模特

userLibrary(z)

和数组function row() { this.name = ''; this.rulingValue = ''; this.pathToImage = ''; this.rulingType = ''; this.dateStart = ''; this.dateEnd = ''; }

我有桌子

var jsonData = [];

和按钮添加此表的行ti。当我向表中添加行时,我也将它添加到数组中。

将行添加到数组

的方法
<table class="table" id="data-table">
    <tbody>
    </tbody>
</table>

向表中添加行的方法

function add() {
    var item = new row();
    item.name = document.getElementById("ruling-name").value;
    item.pathToImage = document.getElementById("path-to-image").value;
    item.rulingValue = document.getElementById("ruling-value").value;
    item.rulingType = document.getElementById("ruling-type").value;
    item.dateStart = document.getElementById("dtp_input1").value;
    item.dateEnd = document.getElementById("dtp_input2").value;
    jsonData.push(item);
    ddRow(item);
}

一切正常但我无法从数组中删除当前行

function ddRow(item) {
    const newRow = tbody.insertRow(tbody.rows.length);
    newRow.insertCell(0).appendChild(document.createTextNode(item.name));
    newRow.insertCell(1).appendChild(document.createTextNode(item.pathToImage));        
    newRow.insertCell(2).appendChild(document.createTextNode(item.rulingValue));
    newRow.insertCell(3).appendChild(document.createTextNode(item.rulingType));
    newRow.insertCell(4).appendChild(document.createTextNode(item.dateStart));
    newRow.insertCell(5).appendChild(document.createTextNode(item.dateEnd));
    var btn = document.createElement("BUTTON");
    btn.setAttribute('type', 'button');
    btn.onclick = function () {
        $(this).closest('tr').remove();
    };
    var t = document.createTextNode("delete");
    btn.appendChild(t);
    newRow.insertCell(6).appendChild(btn);
}

但是如何从数组中删除这一行?

修改

是的,我看到了这个解决方案

$(this).closest('tr').remove(); // removed row from table

但我怎么能做到这一点?

var array = [2, 5, 9];
var index = array.indexOf(5);
if (index > -1) {
    array.splice(index, 1);
}

我试过

var index = jsonData .indexOf(??????????????????????);

我有&#34; var row = this.parentNode.parentNode; var index = jsonData.indexOf(row) alert(index); &#34;

我在json中的数组 enter image description here

1 个答案:

答案 0 :(得分:1)

要根据您的条件查找项目索引,您可以在阵列上使用findIndex函数。

jsonData.findIndex(function(item){ return item.name === "My name" })

该功能未在IE中实现,但您可以使用上面链接中的polyfill。