javascript - 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"]);
解决方案
无论循环是否完成,您都将在 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"]));
推荐阅读
- javascript - 尽管所有承诺都成功解决,但 Promise.all 失败
- rust - 如何生成模板化的 const 声明?
- python - 为什么我的代码即使在清除列表后也会消耗太多内存?
- theory - 尝试查找 REST API 示例(实时)
- android - React Native app crashing at startup on Android: Didn't find class "com.facebook.react.devsupport.DevSupportManagerImpl"
- javascript - 使用 css 属性 translatex 限制鼠标水平滚动
- openrefine - GREL:关于模板导出和空值的qq(打开优化)
- asp.net-core - 是否可以使用 Identity Server 将 Apple SignIn 配置为另一个外部身份验证提供程序
- c++ - 对带有 srand 的 for 循环感到困惑
- javascript - 防止 Webpack SplitChunksPlugin 生成 CSS 文件