我正在尝试遍历数组以检查特定模式,但之后不再输出。不知道我做错了什么!我将不胜感激任何帮助!
我正在测试模式或帽子。
sample = ["cat fat hat mat", "that the who"]
searchTerm = prompt("Testing?");
function count(sample, searchTerm)
{
for (i=0;i<sample.length;i++)
{
if (sample[i].indexOf(searchTerm) == -1)
{
return 0;
}
return count(sample.substring(sample.indexOf(searchTerm) + searchTerm.length), searchTerm) + 1;
}
}
alert(count(sample, searchTerm));
重新编码
search = ["cat fat hat mat", "that the who"];
var pattern = prompt('Search?');
function count(sample, searchTerm)
{
var count, i;
count = 0;
for (i=0; i < sample.length; i++)
{
if (sample[i].indexOf(searchTerm) !== -1)
{
count++;
}
}
return count;
}
count(search, pattern);
我已经重做了一切,但仍然没有输出。
答案 0 :(得分:2)
你不需要在这里使用递归,只要在搜索词匹配的情况下计算,就迭代遍历数组。
function count(sample, searchTerm)
{
var count, i;
count = 0;
for (i=0; i < sample.length; i++)
{
if (sample[i].indexOf(searchTerm) !== -1)
{
count++;
}
}
return count;
}
答案 1 :(得分:2)
此代码存在一些问题。最直接的一个是您在substring
而不是array
上拨打string
。
return count(sample.substring ...
可能你想说
return count(sample[i].substring ...
第二个问题是你需要将逻辑分开一点。您需要将其划分为计算单词中出现次数和迭代数组的部分。今天它们交织在一起并导致奇怪的行为,因为你最终将非数组传递给期望数组的地方
function count(sample, searchTerm) {
var num = 0;
for (i=0;i<sample.length;i++) {
var current = sample[i];
var index = current.indexOf(searchTerm);
while (index >= 0) {
num++;
index = current.indexOf(searchTerm, index + 1);
}
}
return num;
}