Javascript数组比较问题

时间:2016-04-17 11:09:40

标签: javascript arrays for-loop

如何在循环结束后才运行else部分?所以现在:10与10,20,30比较。然后40与10,20,30比较。 我想在将它与所有值(10,20,30)进行比较后才得到40。我想在阵列2中缺少40时进行一些计算。现在它将是40 == 10,它; s缺失,进行计算,但我需要它来比较所有值然后进行计算。

alert("start")
var array1 = [10, 40];
var array2 = [10, 20, 30];
for (var x = 0; x < array2.length; x++) {
  for (var y = 0; y < array1.length; y++) {
    if (array1[y] != array2[x]) {
      alert("Not Found")
    } else {
      alert("Found")
    }
  }
}

4 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.filter()

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

var array1 = [10, 40];
var array2 = [10, 20, 30];

array1.diff(array2); //[40]

答案 1 :(得分:2)

试试这个:

alert("start")

var array1 = [10, 40];
var array2 = [10, 20, 30];


for (var x = 0; x < array1.length; x++) {

  var count = 0;

  for (var y = 0; y < array2.length; y++) {
   	     if(array1[x] == array2[y]) {
         count++;
     }
  }

  if (count > 0) {
       alert("Found")
  } else {
       alert("Not Found")
       // do your calculation here
  }

}

答案 2 :(得分:1)

alert("start")
var array1 = [10, 40];
var array2 = [10, 20, 30];
for (var x = 0; x < array1.length; x++) {
   if(array2.indexOf(array1[x]) == -1) console.log(array1[x] + ' from array 1 not found in array 2');
}

for (var x = 0; x < array2.length; x++) {
   if(array1.indexOf(array2[x]) == -1) console.log(array2[x] + ' from array 2 not found in array 1');
}

FIDDLE

答案 3 :(得分:1)

一些建议:

  • 更改迭代次数;以array1作为外部循环开始,并使用array2作为内部循环,因为您需要array2内的项目摘要。

  • 如果找到该项目,请使用指示符。

  • 评估指标并采取您需要的措施。

&#13;
&#13;
document.write("start<br>");
var array1 = [10, 40],
    array2 = [10, 20, 30],
    x, y, found;

for (x = 0; x < array1.length; x++) {
    found = false;
    for (y = 0; y < array2.length; y++) {
        if (array1[x] === array2[y]) {
            found = true;
        }
    }
    if (!found) {
        document.write(array1[x] + ' not found!<br>');
    }
}
document.write("end");
&#13;
&#13;
&#13;

基本上与上述相同,但更短

&#13;
&#13;
var array1 = [10, 40],
    array2 = [10, 20, 30];

array1.forEach(function (a) {
    if (!~array2.indexOf(a)) {
        document.write(a + ' not found!');
    }
});
&#13;
&#13;
&#13;