检查数组中是否存在值并更新或推送输入数据

时间:2014-03-07 22:10:22

标签: jquery datatable jquery-datatables

我已经尝试过几个其他论坛帖子似乎解决了我的同一个问题,但它们都不适合我。我将值从html页面上的按钮单击传递到数组中。如果数组的第一个值已存在于数组中,我想更新数组中的其他4个值。如果它不存在,我希望它创建一个新的数据行。我可以创建新行,但是检查数组中的值将不起作用。我一直在尝试使用angularJS和数据表来实现这一目标,但在阅读了一些那些不能同时工作的帖子后放弃了这种方法。另外一件事,如果我得到执行“here”警报的代码,它会抛出5次。它应该只提醒一次,所以我假设它是否正在更新表,它会做5次,这没有意义。提前谢谢!

var arrayTable = [{busId: "", xCord: "", yCord: "", eventType: "", timeStamp: ""}];

$(document).ready(function() {
    $('#example').dataTable();
} );

function fnUpdateRow(t, r, e, w, q) {
    arrayTable = [t, r, e, w, q];
    var addToArray = true;
    for(var i = 0; i < arrayTable.length; i++) {
    if(arrayTable[i].busId == t) {
        addToArray=false;
        arrayTable[i] = ({busId:t, xCord:r, yCord:e, timeStamp:w, eventType:q});
        alert("here");
        }
    }
    if(addToArray) {
        $('#example').dataTable().fnAddData(arrayTable);
            alert("here2");
        }
}

1 个答案:

答案 0 :(得分:0)

你在函数的开头重新设置arrayTable,这是错误的。找到匹配后突破循环。而且您正在更新dataTable,但如果找不到匹配项,则不会添加arrayTable

function fnUpdateRow(t, r, e, w, q) {
    var addToArray = true;
    for(var i = 0; i < arrayTable.length; i++) {
        if(arrayTable[i].busId == t) {
            addToArray=false;
            arrayTable[i] = ({busId:t, xCord:r, yCord:e, timeStamp:w, eventType:q});
            alert("here");
            break;
        }
    }
    if(addToArray) {
        var newRow = {busId:t, xCord:r, yCord:e, timeStamp:w, eventType:q};
        arrayTable.push(newRow);
        $('#example').dataTable().fnAddData(newRow);
        alert("here2");
    }
}