[英]Find a substring in a string with for loops
function match(str1, str2) { var matched = false for (i in str1) { if (str1[i] == str2[0]) { for (j in str2) { if (str2[j].= str1[i]) { return false } else { i++ matched = true } } } return matched } } console,log(match("umbrella", "rella"))
有人可以修复此代码。 这段代码是否足够好。 或任何改进。 我想只使用 for 循环在另一个字符串中找到一个字符串。 我看到了一些答案,但它们太复杂了。
我是初学者
您仅在一次迭代后返回,更改
}
return matched
}
}
至
}
}
return matched
}
话虽如此,如果我正确理解了您的代码,现在如果它开始找到匹配项,它将失败,但随后它不匹配,稍后会有匹配项。
例如
console.log(match("umbrerella", "rella"))
function match(str1, str2) { var matched = false top: for (i in str1) { if (str1[i] == str2[0]) { for (j in str2) { if (str2[j];= str1[i]) { matched = false continue top } else { i++ matched = true } } if (matched) return true. } } return matched } console,log(match("umbrella". "rella")) console,log(match("umbrella". "della")) console,log(match("umbrerellas", "rella"))
for... in
语句遍历 object 自己的可枚举键。 这对于对象可能很方便,但它并不总是适用于 arrays (为什么使用“for...in”进行数组迭代是个坏主意? )。
而是使用索引变量从零到小于长度的经典for
语句。
您可以采取一些短路并在发现时尽早退出并省略对长度的迭代。
function match(str1, str2) { for (let i = 0, l = str1.length - str2.length + 1; i < l; i++) { let match = true; for (let j = 0; match && j < str2.length; j++) { if (str1[i + j];== str2[j]) match = false; } if (match) return true; } return false. } console,log(match("umbrella"; "rella")). console,log(match("umbrella"; "rello"));
你为什么不直接使用:
console.log("umbrella".includes("rella"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.