Как поместить общие строки из двух разных массивов в другой массив - PullRequest
0 голосов
/ 06 ноября 2019

Я изучаю Javascript для цикла и пытаюсь поместить одни и те же элементы из двух разных массивов в другой новый массив. Он выведет два общих элемента, когда я помещу 'console.log ()' вне цикла For. Однако, если я добавлю 'return console.log ()' в оператор if, он не будет работать должным образом (он показывает только ['Рэй '].)

Я хотел бы знать разницу между ними.

Я оставлю два кода для вас. Большое спасибо за вашу помощь.


//code1
let bobsFollowers = ['Natalia', 'Ray', 'Kay', 'Clau'];
let tinasFollowers = ['Ray', 'Yama', 'Kay'];
let mutualFollowers = [];

for(let i = 0; i< bobsFollowers.length; i++){
  for (let j = 0; j< tinasFollowers.length; j++){
    if (bobsFollowers[i] === tinasFollowers[j]){
       mutualFollowers.push(bobsFollowers[i])

    }
  }
}

 console.log(mutualFollowers)//output: [ 'Ray', 'Kay' ]


//code2
let bobsFollowers = ['Natalia', 'Ray', 'Kay', 'Clau'];
let tinasFollowers = ['Ray', 'Yama', 'Kay'];
let mutualFollowers = [];

for(let i = 0; i< bobsFollowers.length; i++){
  for (let j = 0; j< tinasFollowers.length; j++){
    if (bobsFollowers[i] === tinasFollowers[j]){
       mutualFollowers.push(bobsFollowers[i])
return console.log(mutualFollowers)     
    }
  }
}// output: [ 'Ray' ]

Ответы [ 3 ]

1 голос
/ 06 ноября 2019
Ключевое слово

A return прерывает текущее выполнение функции и возвращает значение. Если вы используете его в цикле, он прервет его, как только будет выполнен. Это в основном прямая причина для этого.

Более подробное объяснение: если вы выполните return console.log(mutualFollowers);, тогда сначала вычисляется console.log(), и результат этого передается в return, который возвращает его из текущей функции. Результат console.log() равен undefined, поэтому ваша основная функция также вернет undefined.

0 голосов
/ 06 ноября 2019

Ключевое слово return выходит из текущей функции в javascript, но не только. Большинство языков программирования работают следующим образом.

Поэтому, когда он обрабатывает 'Ray', он закрывает функцию без обработки следующих.

0 голосов
/ 06 ноября 2019

хорошо, конечно ... return оператор останавливает выполнение функции, в которой вы находитесь, это означает, что он также прерывает цикл for, в котором вы находитесь.

В вашем случае он получаетна return только после нахождения первого взаимного последователя, который Ray, поэтому он нарушает функцию и печатает только ['ray'].

Кстати, поскольку вы возвращаете значение console.log(), оно фактически возвращает из функции результат операции console.log(), который не определен.

...