检查数组javascript中的重复值

时间:2015-09-29 09:44:56

标签: javascript

我需要检查1个数组值,如果值重复,它会弹出警报。 这是功能:

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) {无法获取未定义或空引用的属性“值”。

由于

3 个答案:

答案 0 :(得分: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错误发生的未定义索引

答案 1 :(得分:0)

这是一个简单的越界错误。使用它来修复它:

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

因此,i+1永远不会与len相同。

答案 2 :(得分: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;
}