首页 > 解决方案 > JavaScript 算法脚本

问题描述

我在 freeCodeCamp 上做练习并坚持这个任务:

如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回 true。

例如,["hello", "Hello"] 应该返回 true,因为第二个字符串中的所有字母都出现在第一个字符串中,忽略大小写。

参数 ["hello", "hey"] 应该返回 false,因为字符串 "hello" 不包含 "y"。

除了这个参数之外,我的代码完全正常工作:[“hello”,“hey”]

请帮助我了解问题所在。

我的代码:

function mutation(arr) {
  let arr1 = arr[0].toLowerCase();
  let arr2 = arr[1].toLowerCase();

  for (let i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) > -1) {
      return true;
    } else {
      return false;
    }
  }

}
mutation(["hello", "hey"]);

标签: javascript

解决方案


无论循环是否完成,您都将在 for 循环的第一次迭代中返回。除非您找到返回的理由(例如您没有找到一封信),否则您想一直循环下去如果你通过循环你很好并且可以返回true

function mutation(arr) {
  let arr1 = arr[0].toLowerCase();
  let arr2 = arr[1].toLowerCase();

  for (let i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) == -1) {
      return false;  // found a false value, you can return
    }
  }
  return true  // made it through the loop without finding a false value.

}
console.log(mutation(["hello", "hey"]));
console.log(mutation(["hello", "HEllo"]));


推荐阅读