Javascript数组比较问题

Javascript Array comparing Issue

本文关键字:问题 比较 数组 Javascript      更新时间:2023-09-26

如何仅在循环结束后运行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")
    }
  }
}

您可以使用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]

试试这个:

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
  }
}

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

一些建议:

  • 改变迭代;从array1作为外循环开始,使用array2作为内循环,因为您需要一个位于array2内部的项目的摘要。

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

  • 评估指标并采取您需要的行动。

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");

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

var array1 = [10, 40],
    array2 = [10, 20, 30];
array1.forEach(function (a) {
    if (!~array2.indexOf(a)) {
        document.write(a + ' not found!');
    }
});