Проверьте, существует ли значение в массиве и обновите или отправьте входные данные

0

Я пробовал несколько других сообщений на форуме, которые, похоже, затрагивают мой вопрос, но никто из них не работает для меня. Я передаю значения с помощью кнопки на странице html в массив. Если первое значение массива существует в массиве, я хочу обновить остальные 4 значения в массиве. Если он не существует, я хочу, чтобы он создал новую строку данных. Я могу создать новые строки, но проверка значения в массиве не будет работать. Я пытался использовать angularJS и datatables для достижения этого, но отказался от этого подхода после прочтения некоторых сообщений, что они не работают вместе. Еще одна вещь, если я получу код для выполнения предупреждения "здесь", он выдает его 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");
        }
}
  • 0
    Вместо использования массива, почему бы не использовать объект, ключом которого является busId ?
Теги:
datatable
jquery-datatables

1 ответ

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");
    }
}
  • 0
    Здравствуйте, и спасибо за ответ. Перерыв; решил повторяющийся вопрос. Тем не менее, оператор if по-прежнему всегда возвращает false. Так что он всегда падает и выполняет код перед предупреждением «здесь2». Я передаю статический набор значений, поэтому я должен увидеть, как он добавляет строку один раз с предупреждением «здесь2», а затем ловит и предупреждает «здесь». Но он никогда не думает, что arrayTables [i] .busId совпадает, хотя это так. есть идеи? Еще раз спасибо.
  • 0
    Я только что заметил, что вы перезаписывает arrayTable в первой строке вашей функции. Возьми это.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню