2017-01-09 6 views
0

Как создать цикл 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?

+0

Вы возвращаетесь, следовательно, только '13' – Rajesh

+0

Вы используете' return' перед проверкой элемента '2' –

ответ

0

Вы выходите из функции при первом поиске.

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

2

первый разif утверждение верно, то функция будет возврат.

Петля не будет продолжать и возвращать больше вещей.

Функция может возвращать только одну вещь, а оператор return останавливает выполнение функции.


Если вы хотите найти каждый матч, то вам нужно хранить спички где-то (например, другой массив) и вернуть после петли закончили.

0

Проверьте это:

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); 
+0

Пожалуйста, объясните, что и почему вы изменили. Кроме того, проверьте другие ответы, если вы не повторяете что-то – Rajesh

0

Вы итерация 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));

Смежные вопросы