Javascript 检查单词是否有相同的字母-错过一次测试

Javascript 检查单词是否有相同的字母-错过一次测试,javascript,Javascript,我正在做一个练习,其中包括检查两个单词是否有相同的字母。到目前为止,我的代码已经通过了除一个测试之外的所有测试。我正在努力理解为什么 这就是我所拥有的: function mutation(arr) { var first = arr[0].toLowerCase(); var second = arr[1].toLowerCase(); for(var i = 0; i < first.length; i++){ var tmp = first.indexOf(secon

我正在做一个练习,其中包括检查两个单词是否有相同的字母。到目前为止,我的代码已经通过了除一个测试之外的所有测试。我正在努力理解为什么

这就是我所拥有的:

function mutation(arr) {

 var first = arr[0].toLowerCase();
 var second = arr[1].toLowerCase();

 for(var i = 0; i < first.length; i++){
   var tmp = first.indexOf(second[i]);
   if(tmp < 0){
     return false;
   }else {
     return true;
   }
  }

 }
功能突变(arr){
var first=arr[0]。toLowerCase();
var second=arr[1]。toLowerCase();
对于(变量i=0;i
唯一的例外是“你好”和“嘿”。 有人能解释一下我遗漏了什么吗?
提前感谢

测试只检查一个方向。如果您有“hello”和“hhhh”两个词,那么所有测试都将通过,因为对于每个循环迭代,它都会检查“hello”中的“h”。

您的返回语句就是问题所在。不要使用return true/false,而是在其中放置一个带有i变量的console.log,这样您将看到循环只运行一次。一旦到达return语句,就可以从函数中退出

您在循环中遇到的另一个问题是,您需要将“first”作为较短的单词,否则,当循环到达
hhhhh ello
的第四个字母时,它无法检查
hey
的第四个字母,因为它只有3个,所以您将得到一个错误(这不会发生在像hello/hey这样的所有场景中,但您也需要为此做好计划)

您可以保留
return false;
部分,但同时删除else{return true;},并在具体到达循环末尾时创建一个条件。下面是一个这样做的示例

功能突变(arr){
var first=arr[0]。toLowerCase();
var second=arr[1]。toLowerCase();
对于(变量i=0;i”)中;
返回false;
}否则{
$(“#字母”).append(第二个[i]+”在“+first+”
”)中; } } } 突变([“你好”,“你好]);


这不只是检查第一个字母是否相同吗。因为您在第一次迭代后返回。所以您想检查这两个单词是否是字谜吗?您在
first.length上有一个循环,但在内部使用
second[i]
。应该是
var tmp=second.indexOf(first[i]);
和move
返回false
到函数末尾,不管它是否是一个字谜。它只需要检查两者中是否存在相同的字母,而不管顺序如何。例如,单词“hey”和“hello”应该返回false,因为单词hello没有“y”.我试过基里尔斯的解决方案,但没有成功:“‘两个单词有相同的字母’的定义是什么?”?