为什么这个特定的突变会变回原样,而其他突变却不成立呢?

时间:2019-03-22 14:32:55

标签: javascript

我正在研究来自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"])
);  

2 个答案:

答案 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"])
);