我正在编写一个脚本来为在线作者识别创建指标。我在文献中遇到的一件事就是计算每个字母的频率(多少个字母,多少个字母等),与大小写无关。因为我不想为每个字母创建一个单独的语句,所以我试图循环这个东西,但我无法弄明白。我能想到的最好的是将ASCII字母代码转换为十六进制,然后......希望奇迹发生。
到目前为止,我已经
了element = id.toLowerCase();
var hex = 0;
for (k=97; k<122; k++){
hex = k.toString(16); //gets me to hex
letter = element.replace(/[^\hex]/g, "")//remove everything but the current letter I'm looking for
return letter.length // the length of the resulting string is how many times the ltter came up
}
但当然,当我这样做时,它会将十六进制解释为字母h x,而不是我想要的字母的十六进制代码。
答案 0 :(得分:5)
不确定为什么要转换为十六进制,但是你可以遍历字符串的字符并跟踪每个字符出现的次数与用作哈希的对象:
var element = id.toLowerCase();
var keys = {};
for(var i = 0, len = element.length; i<len; i++) {
if(keys[element.charAt(i)]) keys[element.charAt(i)]++;
else keys[element.charAt(i)] = 1;
}
您可以使用数组执行相同的操作,但哈希更快。