function occurrence(string,substring) {
var counter = 0;
var sub = substring.toLowerCase();
var str = string.toLowerCase();
var array = []
var ans;
for (var i = 0; i < str.length; i++) {
if (str.indexOf(sub) != -1) {
array[counter] = str.indexOf(sub);
counter += 1;
ans = array.length
alert(array); //tester to see inside array
} else {
ans = 0;
}
}
return ans
}
alert(occurrence("Party arty art","art")) //tester to see function in action
在上面显示的测试器中,它应该打印出 3。但是使用我的代码,它会打印出字符串的长度。我试图将“art”在字符串中出现的位置的索引存储在数组中,以便我可以打印出该数组以给出出现的次数。然而,当我警告循环内的数组时,它只打印出“1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1”。
注意:我尝试使用尽可能少的内置函数来编写此代码。我是 javascript 新手,因此非常感谢一些指导。
我也尝试在不使用 .match() 的情况下编写此内容
最佳答案
像这样的事情怎么样?
function occurrence(string, substring) {
var counter = 0;
var sub = substring.toLowerCase();
var str = string.toLowerCase();
var array = [];
var index = -1;
do {
index = str.indexOf(sub, index + 1);
if (index != -1) {
array[counter++] = index;
i = index;
}
} while (index != -1);
return counter; // or return array; if you want the indexes
}
关于javascript - 如何返回字符串中子串的出现频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822749/