如何将两个不同数组中的公共字符串放到另一个数组中

How to put common strings from two different arrays to another array

我正在研究 Javascript,for 循环,并尝试将两个不同数组中的相同元素放到另一个新数组中。 当我将 'console.log()' 放在 For 循环之外时,它将打印两个公共元素,但是,如果我将 'return console.log()' 放在 if 语句中,它将无法正常工作(它只显示 [ 'Ray' ] .)

我想知道它们之间的区别。

我给你留两个密码。 非常感谢您的帮助。


//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' ]

当然...return 语句会停止执行您所在的函数,这意味着它还会中断您所在的 for 循环。

在你的例子中,只有在找到第一个相互关注者 Ray 之后,它才会到达 return,因此它会破坏函数并仅打印 ['ray']

顺便说一句,因为你的 return 在 console.log() 上,它实际上 return 出函数 console.log() 操作的结果,它是未定义的。

一个return关键字中断了当前函数的执行并且return是一个值。如果你在循环中使用它,它会在它执行后立即中断它。这基本上是造成这种情况的直接原因。

更多说明: 如果您执行 return console.log(mutualFollowers);,则首先评估 console.log(),然后将其结果传递给 return,return 是当前函数的结果。 console.log() 的结果是 undefined 所以你的 main 函数也会 return undefined.

关键字 return 退出当前函数,在 javascript 中,但不仅如此。大多数编程语言都是这样工作的。

所以当它处理 'Ray' 时,它会退出函数而不处理下一个。