使用 indexOf() Javascript 迭代时代码中的特定错误
specific bug in code when iterating using indexOf() Javascript
我一直在经历 FreeCodeCamp 的 Bonfire 算法挑战,在这个特殊的挑战中,我们得到了两个参数,并被要求使用 indexOf() 将第二个参数的字符串中的所有字符与第一个参数进行匹配,如果第二个参数包含第一个参数中不存在的字母,则函数应该 return false.
使用我在这里写的函数,我通过了他们使用的所有测试参数,除了他们通过的时候:
mutation("hello", "hey");
即使我在其他地方尝试 运行 这个函数,用上面的参数调用这个函数仍然 return 正确,但它应该 return 错误。
function mutation(arr) {
var arr0 = arr[0].toLowerCase();
var arr1 = arr[1].toLowerCase().split(''); //breaks characters into an array
for (var i = 0, length = arr1.length; i < length; i++) {
var check = arr0.indexOf(arr1[i]); // each element in arr1 is checked
if (check === -1) { // against arr0
return false;
}
return true;
}
}
mutation(["hello", "hey"]); //returns true, but I can't find out know why
将其移出循环:
return true;
所以在它后面的大括号之后。
这是因为只有检查了所有字符才能知道结果是否为真。正如您现在所拥有的那样,for 循环实际上从不循环,它总是在第一次迭代时 returns。
function mutation(arr) {
for (var i = 0; i < arr[1].length; i++){
if (arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) == -1)
return false;
}
return true;
}
我一直在经历 FreeCodeCamp 的 Bonfire 算法挑战,在这个特殊的挑战中,我们得到了两个参数,并被要求使用 indexOf() 将第二个参数的字符串中的所有字符与第一个参数进行匹配,如果第二个参数包含第一个参数中不存在的字母,则函数应该 return false.
使用我在这里写的函数,我通过了他们使用的所有测试参数,除了他们通过的时候:
mutation("hello", "hey");
即使我在其他地方尝试 运行 这个函数,用上面的参数调用这个函数仍然 return 正确,但它应该 return 错误。
function mutation(arr) {
var arr0 = arr[0].toLowerCase();
var arr1 = arr[1].toLowerCase().split(''); //breaks characters into an array
for (var i = 0, length = arr1.length; i < length; i++) {
var check = arr0.indexOf(arr1[i]); // each element in arr1 is checked
if (check === -1) { // against arr0
return false;
}
return true;
}
}
mutation(["hello", "hey"]); //returns true, but I can't find out know why
将其移出循环:
return true;
所以在它后面的大括号之后。
这是因为只有检查了所有字符才能知道结果是否为真。正如您现在所拥有的那样,for 循环实际上从不循环,它总是在第一次迭代时 returns。
function mutation(arr) {
for (var i = 0; i < arr[1].length; i++){
if (arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) == -1)
return false;
}
return true;
}