【问题标题】:How to put common strings from two different arrays to another array如何将两个不同数组中的公共字符串放到另一个数组中
【发布时间】:2019-11-06 21:49:36
【问题描述】:

我正在研究 Javascript、for 循环,并尝试将相同元素从两个不同的数组放入另一个新数组。 当我将 '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' ]

【问题讨论】:

标签: javascript nested-loops


【解决方案1】:

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

更多解释: 如果您执行return console.log(mutualFollowers);,则首先评估console.log(),并将其结果传递给return,后者从当前函数返回它。 console.log() 的结果是 undefined,所以你的 main 函数也会返回 undefined。

【讨论】:

  • 谢谢你,塞巴斯蒂安。我是 Javascript 新手,这个答案确实帮助我理解了这个问题。您的额外信息,很高兴知道,再次感谢!
  • 很高兴我能帮上忙 ;) 干杯!
【解决方案2】:

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

在您的情况下,它仅在找到第一个相互跟随者 Ray 后才到达 return,因此它破坏了函数并仅打印 ['ray']。

顺便说一句,因为您的返回是在console.log() 上,所以它实际上从函数中返回了console.log() 操作的结果,这是未定义的。

【讨论】:

  • 谢谢你,吉博尔!
【解决方案3】:

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

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

【讨论】:

  • 谢谢你,文森特!
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2015-03-14
相关资源
最近更新 更多