2016-04-17 1 views
0

Comment puis-je exécuter la partie else seulement après la fin de la boucle ici? Donc maintenant: 10 est comparé avec 10, 20, 30. Puis 40 est comparé avec 10, 20, 30. Je veux obtenir 40 seulement après avoir été comparé avec toutes les valeurs (10, 20, 30). Je vais vouloir faire des calculs quand 40 est absent du tableau 2. En ce moment, il serait 40 == 10, il est manquant, faire des calculs, mais j'en ai besoin pour comparer toutes les valeurs, puis faire le calcul.Javascript Array comparaison Question

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

Répondre

2

Essayez ceci:

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++) { 
 
    \t  if(array1[x] == array2[y]) { 
 
     count++; 
 
    } 
 
    } 
 

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

 
}

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

Vous pouvez utiliser 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

Quelques suggestions:

  • changement l'itération; commencer avec array1 comme boucle externe et utiliser array2 comme boucle interne, parce que vous avez besoin d'un résumé d'un élément est à l'intérieur de array2.

  • utilisez un indicateur si l'élément est trouvé.

  • évaluez l'indicateur et effectuez l'action dont vous avez besoin.

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

Fondamentalement, le même que ci-dessus, mais plus courte

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

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