如何
创建一个可用于其他函数的 for 循环?
如何使用 for 循环创建全局变量?
arrayNr1 = [4,8,13,2]
arrayNr2 = [1,2,3,13]
function globalLoop(array1, array2) {
for(var i=0; i<array1.length; i++) {
for(var j=0; j<array2.length; j++){
if(array1[i] == array2[j]) {
return array2[j]
}
}
}
}
console.log(globalLoop(arrayNr1,arrayNr2)); //-> 13
为什么它只返回 13 而不是 13 和 2?
第一次 if
语句为真时,函数将返回。
循环不会继续运行并返回更多内容。
一个函数只能返回一个东西,一个 return 语句将阻止函数进一步运行。
如果要查找每个匹配项,则需要将匹配项存储在某个位置(例如另一个数组),并在循环完成后返回。
检查一下:
arrayNr1 = [4,8,13,2];
arrayNr2 = [1,2,3,13];
arrayFinal = [];
function globalLoop(array1, array2) {
for(var i=0; i<array1.length; i++) {
for(var j=0; j<array2.length; j++){
if(array1[i] == array2[j]) {
arrayFinal.push(array2[j])
}
}
}
}
globalLoop(arrayNr1,arrayNr2);
console.log(arrayFinal);
在第一次找到函数时退出函数。
return array2[j]
您可以使用数组收集值。
function globalLoop(array1, array2) {
var result = [], i, j;
for (i = 0; i < array1.length; i++) {
for (j = 0; j < array2.length; j++){
if (array1[i] == array2[j]) {
result.push(array1[i]);
break;
}
}
}
return result;
}
var arrayNr1 = [4, 8, 13, 2],
arrayNr2 = [1, 2, 3, 13];
console.log(globalLoop(arrayNr1,arrayNr2));
您首先迭代 arrayNr1,两个数组中的第一个匹配项是 (13, 13)。return 语句在第一个匹配项上停止循环,它永远不会到达第二个匹配项。
以下代码片段收集所有匹配项并返回一个数组。
arrayNr1 = [4,8,13,2]
arrayNr2 = [1,2,3,13]
function globalLoop(array1, array2) {
var equal_elements = [];
for(var i=0; i<array1.length; i++) {
for(var j=0; j<array2.length; j++){
if(array1[i] == array2[j]) {
// collect matches
equal_elements.push(array2[j]);
}
}
}
return equal_elements;
}
console.log(globalLoop(arrayNr1,arrayNr2));