创建一个保留循环的全局函数


如何

创建一个可用于其他函数的 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));

相关内容

  • 没有找到相关文章

最新更新