从数组中删除特定数组元素

时间:2017-12-15 13:57:51

标签: javascript arrays

我需要在我的代码中点击删除时从数组中删除一个选择的元素, 但到目前为止我无法达成目标。 我试图将当前数组值与标记值进行比较,如果它们相等, 从数组中删除该值 我想我在过程中遗漏了一些东西 需要总和指导))))谢谢 这是我的js代码

$(function(){
var tableHead =
    "<table>" +
        "<tr>" +
            "<th class='sort'>Id sort</th>" +
            "<th>Name</th>" +
            "<th>Surname</th>" +
            "<th>Birthday</th>" +
            "<th>Filter</th>" +
            "<th class='addList'>+</th>" +
        "</tr>" +
    "</table>";

$('body').html(tableHead);

var name = "<input type='text' class='name' placeholder='First name'>";
var surname = "<input type='text' class='surname' placeholder='Surname'>";
var bDayDate ="<input type='date' class='bDayDate' placeholder='Bday'>";
var addList = $('.addList');
var idNum = 0;
var arrNum= [];
var sortedArr = [];

addList.on("click", function(){
    idNum++;
   var tr = $("<tr></tr>");
    for(var i = 1; i <= 6; i++){
        var td = $('<td></td>');
        tr.addClass(""+ idNum);
        switch (i){
            case 1:
                td.addClass(""+ idNum);
                td.html(idNum);
            break;
            case 2: td.html(name);
            break;
            case 3: td.html(surname);
            break;
            case 4: td.html(bDayDate);
            break;
            case 5: td.html(1);
            break;
            case 6:
                td.html("Delete");
                td.addClass('delete');
            break;
            default:
                return console.log("OooPs!!");
        }
        tr.append(td);
    }

    var value;
    arrNum.push(tr);
    $('table').append(arrNum);

    arrNum.forEach(function(val,i){
        value = val
    });

    $('.delete').on("click", function(){
       $(this).parent().remove();
       var that = $(this).parent();
        for(var k = 0;k <arrNum.length - 1; k++){
            if(that[k] === value[k]){
                arrNum.splice(k,1)
            } else {
                console.log("wrong!!")
            }
        }

    });

    for(var j = arrNum.length; j >= 0; j--){
        sortedArr.push(arrNum[j]);
    }

    $(".sort").on("click", function(){
        $('table').append(sortedArr);
        $('.delete').on("click", function(){
            $(this).parent().remove();

        });
    });
});

});

2 个答案:

答案 0 :(得分:0)

尝试此更改,在删除​​事件中调用此函数

function removeItem(item, arr, sArr)
{
   var that = $(item).parent();
   $(item).parent().remove();

    for(var k = 0;k <arr.length; k++)
    {
       if(arr[k] && that[0] === arr[k][0])
       {
         arr.splice(k,1);
       } else {
         console.log("wrong!!")
       }
    }

    // If you want delete when sort the table
    for(var k = 0;k <sArr.length; k++)
    {
       if(sArr[k] && that[0] === sArr[k][0])
       {
         sArr.splice(k,1);
       } else {
         console.log("wrong!!")
       }
    }
}

并致电:

$('.delete').on("click", function()
{
    removeItem(this, arrNum, sortedArr);
});

答案 1 :(得分:0)

您可以使用grep

 arrNum=  $.grep(arrNum, function(e) {

            return e != value ;
        });
相关问题