如何在循环结束后才运行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")
}
}
}
答案 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');
}
答案 3 :(得分:1)
一些建议:
更改迭代次数;以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");
&#13;
基本上与上述相同,但更短
var array1 = [10, 40],
array2 = [10, 20, 30];
array1.forEach(function (a) {
if (!~array2.indexOf(a)) {
document.write(a + ' not found!');
}
});
&#13;