Javascript:保存数组中重复项的索引

时间:2015-12-01 15:58:53

标签: javascript jquery arrays

我创建了这个函数来在Web表单中查找重复的条目,我需要的是将每个重复项的索引号存储在另一个数组中。到

function arrTieneDups( arr ) 
{                          
    var xi, xj, xn;
    n=arr.length;

    for (xi=0; xi<n; xi++) {                        
        for (xj=xi+1; xj<n; xj++) {              
            if (arr[xi]==arr[xj]) return true;
    }   }
    return false;
}

循环遍历新数组并使用它......

for (var i in arr2)
{
    $( "input[name$='matricula"+i+"']" ).addClass("errorformalta");
    $( "input[name$='matricula"+i+"']" ).addClass("errorinputtext"); 
    $( "input[name$='matricula"+i+"']" ).after('<span style="display: inline; margin-left: -20px; opacity: 1;font-size:48px;color:red;font-weight:800;" class="pyr_error_form">!</span>');
}

我现在也在做...通过Orcuro代码。但结果并不像预期的那样。我需要“var it”作为重复项的索引号。例如:2,4,6 我想要的是,向用户指出他们引入重复数据的字段。

for (var it in arrTieneDups(matriculas) )
{
  $( "input[name$='matricula"+it+"']" ).addClass("errorformalta");
  $( "input[name$='matricula"+it+"']" ).addClass("errorinputtext"); 
  $( "input[name$='matricula"+it+"']" ).after('<span style="display: inline; margin-left: -20px; opacity: 1;font-size:48px;color:red;font-weight:800;" class="pyr_error_form">!</span>');
  error_validation=1;
  error_top=1;
  error_mat_formato="</br>! Matrícula(s) inválida(s)";
  error_look="</br>Revise también los siguientes errores:";
  all_ok=1;
}

2 个答案:

答案 0 :(得分:1)

我建议不要在找到副本时返回true,只是将该索引(在你的情况下为xi)存储到duplicates数组中,并在循环返回该数组之后。

也变量xn不会在我看到的地方使用

答案 1 :(得分:1)

您可以将此“重复对象”数组作为参数传递。有点像...

 function arrTieneDups( arr ) 
 {                          
    var xi, xj;
    var dupeArray = [];
    n=arr.length;

    for (xi=0; xi<n; xi++) {                        
        for (xj=xi+1; xj<n; xj++) {              
            if (arr[xi]==arr[xj]) 
                dupeArray.push(arr [xi]);
    }   }
    return dupeArray;
}

从那里,在你的函数之外,迭代这个数组并像以前一样添加必要的样式。

for (var i in  arrTieneDups( yourArray ) )
{
    $( "input[name$='matricula"+i+"']" ).addClass("errorformalta");
    $( "input[name$='matricula"+i+"']" ).addClass("errorinputtext"); 
    $( "input[name$='matricula"+i+"']" ).after('<span style="display: inline; margin-left: -20px; opacity: 1;font-size:48px;color:red;font-weight:800;" class="pyr_error_form">!</span>');
}

语法可能已关闭。我现在无法进行测试。