2015-09-29 3 views
0

Мне нужно проверить значение 1 массива, если значение дублируется, оно выдает предупреждение. Вот функция:Проверить повторяющееся значение в массиве javascript

function checkDuplicateTenure(){ 
    var f = document.frmPL0002; 
    var supplgrid = document.getElementById("mdrPymtGrid2"); 
    var len = (supplgrid.rows.length) - 1; 

    for(var i=0;i<len;i++){ 
     if (f.cbo_loanTenure[i+1].value == f.cbo_loanTenure[i].value) { 
      alert("DUPLICATE LOAN TENURE IN MONTH(S)"); 
     } 
    } 

    return false; 
} 

Эта функция работает, если есть повторяющееся значение в массиве, но если все указано другое значение, его ударят ошибку Js if (f.cbo_loanTenure[i+1].value == f.cbo_loanTenure[i].value) { Невозможно получить свойство «значение» неопределенной или нулевой ссылки.

Благодаря

+0

кажется 'supplgrid.rows' и' f.cbo_loanTenure' не такой же длины. – Sirko

ответ

0

Это простая ошибка за пределами границ. Зафиксируйте его с помощью этого:

for (var i=0;i<len-1;i++) { 

Так, i+1 никогда не будет таким же, как len.

0

изменить его

for(var i=0;i<len-1;i++){ 
     if (f.cbo_loanTenure[i+1].value == f.cbo_loanTenure[i].value) { 
      alert("DUPLICATE LOAN TENURE IN MONTH(S)"); 
     } 
    } 

предположим, что ваш цикл выполняется 5 раз, и вы можете установить i+1 внутри цикла он приходит 6, который не определен индекс, почему JS ошибка

0

Попробуйте это:

function checkDuplicateTenure(){ 
    var f = document.frmPL0002; 
    var supplgrid = document.getElementById("mdrPymtGrid2"); 
    var len = (supplgrid.rows.length) - 1; 

    for(var i=0;i<len-1;i++){ 
     if (f.cbo_loanTenure[i+1].value == f.cbo_loanTenure[i].value) { 
      alert("DUPLICATE LOAN TENURE IN MONTH(S)"); 
     } 
    } 

    return false; 
} 
+0

Почему вы уменьшаете длину на 2? Если 'supplgrid.rows' и' f.cbo_loanTenure' имеют одну и ту же длину, достаточно уменьшить 'len' только один раз, это уже было сделано. –

Смежные вопросы