Javascript 在具有for循环的字符串中查找子字符串

Javascript 在具有for循环的字符串中查找子字符串,javascript,arrays,Javascript,Arrays,函数匹配str1,str2{ var匹配=假 对于str1中的i{ 如果str1[i]==str2[0]{ 对于str2中的j{ 如果str2[j]!=str1[i]{ 返回错误 }否则{ 我++ 匹配=真 } } } 回报匹配 } } console.logmatchumbrane,rella为什么不直接使用: console.logumbrane.includesrella为什么不使用: console.logumbrane.includesrella您仅在一次迭代后返回,更改

函数匹配str1,str2{ var匹配=假 对于str1中的i{ 如果str1[i]==str2[0]{ 对于str2中的j{ 如果str2[j]!=str1[i]{ 返回错误 }否则{ 我++ 匹配=真 } } } 回报匹配 } }
console.logmatchumbrane,rella为什么不直接使用:


console.logumbrane.includesrella为什么不使用:


console.logumbrane.includesrella您仅在一次迭代后返回,更改

    }
    return matched
  }
}

这就是说,如果我正确理解了您的代码,现在如果它开始找到匹配项,它将失败,但随后它不匹配,稍后会有匹配项

例如

函数匹配str1,str2{ var匹配=假 顶部: 对于str1中的i{ 如果str1[i]==str2[0]{ 对于str2中的j{ 如果str2[j]!=str1[i]{ 匹配=错误 继续前进 }否则{ 我++ 匹配=真 } } 如果匹配,则返回true; } } 回报匹配 } console.logmatch雨伞,rella console.Logmatch雨伞,德拉
console.logmatchumbrerellas,rella您仅在一次迭代后返回,更改

    }
    return matched
  }
}

这就是说,如果我正确理解了您的代码,现在如果它开始找到匹配项,它将失败,但随后它不匹配,稍后会有匹配项

例如

函数匹配str1,str2{ var匹配=假 顶部: 对于str1中的i{ 如果str1[i]==str2[0]{ 对于str2中的j{ 如果str2[j]!=str1[i]{ 匹配=错误 继续前进 }否则{ 我++ 匹配=真 } } 如果匹配,则返回true; } } 回报匹配 } console.logmatch雨伞,rella console.Logmatch雨伞,德拉 console.logmatchumbrerellas,rella迭代对象自身的可枚举键。这对于对象可能很方便,但对于数组并不总是有效

相反,请使用索引变量为0到小于长度的classic

您可以进行一些短路,在发现时尽早退出,并忽略对长度的迭代

函数匹配str1,str2{ 对于设i=0,l=str1.length-str2.length+1;i 相反,请使用索引变量为0到小于长度的classic

您可以进行一些短路,在发现时尽早退出,并忽略对长度的迭代

函数匹配str1,str2{ 对于设i=0,l=str1.length-str2.length+1;iconsole.logmatchumber,rello;我不想使用任何辅助方法OP只想用于循环。我不想使用任何辅助方法OP只想用于循环。是的,我检查了一些错误,谢谢。它就像一个符咒现在我检查出了什么不对劲谢谢。它现在起作用了
console.log(match("umbrerella", "rella"))