我正在研究来自FCC的挑战之一,而我却坚持了这一突变。
FCC经历了许多其他突变,它们全部恢复正确,但是没有,我不知道为什么。
function mutation(arr) {
let arr1 = arr[1].toString().toLowerCase().split("");
let arr2 = arr[0].toString().toLowerCase();
for (let i = 0; i < arr2.length; i++) {
if (arr2.includes(arr1[i]) == false) {
return false
} else {
return true
}
}
}
console.log(
mutation(["hello", "hey"])
);
答案 0 :(得分:1)
请记住,当函数以return
到达一行时,它将立即停止。
因此在此代码中,arr1是一个包含第二个单词的字母的数组,而arr2是一个包含第一个单词的字母的数组。循环然后遍历arr2并检查arr1中的对应字母是否匹配。无论是否输入,它都会立即返回,这意味着无论您输入什么内容,它都只会检查单词中的首字母。
因此,在您的示例调用中,它将查看“ hello”中的“ h”,并将其与“ hey”中的“ h”进行比较,由于它们匹配,因此它将返回true并停止检查。
答案 1 :(得分:0)
如果您想查看一个单词是否与另一个单词具有相同的字母,可以尝试不考虑双字母的情况
function mutation(arr) {
let arr1 = arr[1].toString().toLowerCase().split("");
let arr2 = arr[0].toString().toLowerCase();
let cnt=0;
const len = Math.min(arr1.length,arr2.length)
console.log(len)
for (let i = 0; i < len; i++) {
if (arr2.includes(arr1[i])) cnt++;
console.log(i,arr1[i],arr2.includes(arr1[i]))
}
return cnt === len;
}
console.log(
mutation(["hello", "hey"])
);