如何在javascript中验证和比较数组重复数组

时间:2017-03-03 18:09:56

标签: javascript arrays validation

我将输入的值存储在变量中并将它们保存在数组中。

我想比较是否输入了重复的旅行ID,如果输入重复的旅行ID及其相应的邮政编码,则添加红色错误。

<p>
  <input id="tripcode1" value="tripcode1">
  <input id="zipcode1" value="zipcode1">
</p>
<p>
  <input id="tripcode2" value="tripcode2">
  <input id="zipcode2" value="zipcode2">
</p>
<p>
  <input id="tripcode3" value="">
  <input id="zipcode3" value="">
</p>
<p>
  <input id="tripcode4" value="">
  <input id="zipcode4" value="">
</p>
<p>
  <input id="tripcode5" value="">
  <input id="zipcode5" value="">
</p>
<a href="javascript:validateTripID();">Submit</a>
<script>
  function validateTripID() {
    var tripcode1 = document.getElementById("tripcode1").value;
    var zipcode1 = document.getElementById("zipcode1").value;
    var tripcode2 = document.getElementById("tripcode2").value;
    var zipcode2 = document.getElementById("zipcode2").value;
    var tripcode3 = document.getElementById("tripcode3").value;
    var zipcode3 = document.getElementById("zipcode3").value;
    var tripcode4 = document.getElementById("tripcode4").value;
    var zipcode4 = document.getElementById("zipcode4").value;
    var tripcode5 = document.getElementById("tripcode5").value;
    var zipcode5 = document.getElementById("zipcode5").value;
    var tripIDArray = [
      [tripcode1,zipcode1],
      [tripcode2,zipcode2],
      [tripcode3,zipcode3],
      [tripcode4,zipcode4],
      [tripcode5,zipcode5]
    ];
    var tripArrayLength = tripIDArray.length;
    var Z = 0;
    for (var i=0; i < tripArrayLength; i++) {
      var a = tripIDArray[Z][0];
      for  (var k=0 ; k < tripArrayLength; K++) {
        var b = tripIDArray[k][0];
        k++;
        if (a === b) {
            alert(a);
        }
      }
      Z = Z+1;
    }
  }
</script>

3 个答案:

答案 0 :(得分:0)

在这里你去!请参阅jsFiddle链接

check updated code here

<p>
  <input id="tripcode1" value="tripcode1">
  <input id="zipcode1" value="zipcode1">
</p>
<p>
  <input id="tripcode2" value="tripcode2">
  <input id="zipcode2" value="zipcode2">
</p>
<a href="javascript:validateTripID();">Submit</a>
<script>
  function validateTripID() {
    var tripcode1 = document.getElementById("tripcode1").value;
    var zipcode1 = document.getElementById("zipcode1").value;
    var tripcode2 = document.getElementById("tripcode2").value;
    var zipcode2 = document.getElementById("zipcode2").value;
      var tripIDArray = [
      [tripcode1,zipcode1],
      [tripcode2,zipcode2]
    ];
    var tripArrayLength = tripIDArray.length;
    var Z=0;
    for (var i = 0; i < tripArrayLength; i++) {
        var ithItem = tripIDArray[i];
      for  (var k =i+1 ; k < tripArrayLength; K++) {
        var kthItem = tripIDArray[k];
        if(ithItem[0] == kthItem[0] && ithItem[1] == kthItem[1]){
        alert("match found:"+ithItem+"=="+kthItem);
        }
      }
    }
  }

</script>

答案 1 :(得分:0)

我没有得到你想要的但是检查一下: update

如果您想检查邮政编码,也只需更改以下内容:

// change this var a = tripIDArray[i] to 
var a = tripIDArray[i];
...
var b = tripIDArray[k];
...
//change if statement to 
if (a[0]===b[0] && a[1]===b[1]) ...

答案 2 :(得分:0)

我已更新您的小提琴以找到重复的tripcode条目。根据你的解释,我想这就是你想要做的。

function validateTripID() {
    var tripcode1 = document.getElementById("tripcode1");
    var zipcode1 = document.getElementById("zipcode1");
    var tripcode2 = document.getElementById("tripcode2");
    var zipcode2 = document.getElementById("zipcode2");
    var tripcode3 = document.getElementById("tripcode3");
    var zipcode3 = document.getElementById("zipcode3");
    var tripcode4 = document.getElementById("tripcode4");
    var zipcode4 = document.getElementById("zipcode4");
    var tripcode5 = document.getElementById("tripcode5");
    var zipcode5 = document.getElementById("zipcode5");
    var tripcodes = [tripcode1, tripcode2, tripcode3, tripcode4, tripcode5];
    var zipcodes = [zipcode1, zipcode2, zipcode3, zipcode4, zipcode5];
    var tripIDArray = [
      [tripcodes[0].value, zipcodes[0].value],
      [tripcodes[1].value, zipcodes[1].value],
      [tripcodes[2].value, zipcodes[2].value],
      [tripcodes[3].value, zipcodes[3].value],
      [tripcodes[4].value, zipcodes[4].value]
    ];
    var tripArrayLength = tripIDArray.length;
    for (var i = 0; i < tripArrayLength; i++) {
      for(var j = i+1; j < tripArrayLength; j++){
        if(tripIDArray[i][0] == tripIDArray[j][0]){
            tripcodes[i].className += "error";
            alert("tripcode "+tripIDArray[i][0]+" already entered at highlighted field!");
    }
  }
}

}

工作小提琴:https://jsfiddle.net/yogesh214/e2atyk14/4/