如何将两个不同数组中的公共字符串放到另一个数组中
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' 时,它会退出函数而不处理下一个。
我正在研究 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' 时,它会退出函数而不处理下一个。