【发布时间】:2017-02-04 00:58:28
【问题描述】:
给函数一个包含 2 个元素的数组,确切地说是 2 个字符串。如果第一个元素在第二个元素中包含每个字母(只有一次,没有大小写,没有顺序),则函数返回 true,如果不是 false。
嘿,你好。但是,例如, mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]) 不会以某种方式返回 true。我怀疑嵌套在 for 循环中的 if 语句有问题。我是多次返回 false 或 true,还是有其他问题?
function mutation(arr) {
var one=arr[0];
var two=arr[1];
one.toLowerCase();
two.toLowerCase();
var array=two.split("");
for(var i=0;i<array.length;i++){
if(one.indexOf(array[i]) !== -1){
return false;
}else return true;
}
}
mutation(["hello", "hey"]);
编辑: 新发现!如果我将 else return true 移动到 for 循环的结束括号之后,则 mutation("hello", "neo") 将根据需要返回 false。但是,如果我这样做了,那么 mutation("hello", "hey") 就不会返回 true,而在更改之前,它会。
【问题讨论】:
-
你不能“多次返回”。一旦返回一个值,它就会被返回。该功能在此时完成执行。当您在调试器中单步执行此代码时,行为与您的预期有何不同?发生这种情况时变量的值是多少?
-
大卫是对的,你已经在 for 循环中返回...
标签: javascript