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”.我试过基里尔斯的解决方案,但没有成功:“‘两个单词有相同的字母’的定义是什么?”?