我试图教自己的JavaScript。我选择了一些我认为很简单但却相对迅速地遇到问题的东西。Javascript:匹配数组的动态字符串
我正在尝试搜索用户给出的另一个字符串的字符串。
到目前为止我的代码是:
var source = "XREs2qqAQfjr6NZs6H5wkZdOES5mikexRkOPsj6grQiYNZfFoqXI4Nnc1iONKVrA";
var searchString = []; //the users input
searchString = prompt("Enter search string");
var hits = [];
var one = 0;
var two = 0;
var k = 0;
var sourceSearch = function(text) {
for(i = 0; i < source.length; i++) { //for each character in the source
if(source[i] === searchString[0]) { //if a character in source matches the first element in the users input
one = source.indexOf(i); //confused from here on
for(p = searchString.length; p > 0; p--) {
}
}
}
};
sourceSearch(searchString);
我的想法是:看
- 检查,如果第一循环认定的第一个字符在用户输入相匹配的字符
- 如果它匹配,检查在第一次匹配源字符串中的下一个X字符后的下一个X字符是否全部匹配,将它们推送到匹配数组
- 如果它们全都匹配,则将它们推送到匹配数组
我的问题:我不知道如何沿着阵列无迭代嵌套if语句也不少,即使在当时,这是不够的,考虑到我想要的程序与任何输入工作。
任何想法都会有所帮助。首先十分感谢。
注:我正在测试的想法中有一些未使用的变量,但我无法让它们工作。
非常感谢。不幸的是,凭借我有限的经验,我无法理解这一点。 – Malaugrym 2013-03-21 18:12:31
我超过了5分钟的编辑时间,剩下的就是这里。 '(j = searchString.length - 1; ok && j> = 0; --j)** **第一个**:在这一点上,ok是真的。如果我正确读取它,那么此循环运行,直到ok为假,且j小于或等于0。我看不出有多好可能会变成错误的,除非它没有,在这种情况下我彻底失去了。 **第二**:'ok = source [i + j] = searchString [j];'。我根本就不明白这一点。我读它为“真正成为(我加入到j)成为searchString中的第j个位置”。我没有理解什么?再次感谢您的耐心。 – Malaugrym 2013-03-21 18:21:25
@Malaugrym - 循环运行,直到'ok'为'false'或'j <0'。好的问题可能会成为错误。这是一个错字,该行应该是'ok = source [i + j] === searchString [j];'。现在已经解决了答案。对于那个很抱歉。 – 2013-03-21 18:46:18