Javascript嵌套循环问题?
我试图创建一小块javascript来计算一段文本中每个字母的数量,供个人使用。我有一个以前的版本,每个字母都有一个单独的循环,它可以工作,但是相当长,而且创建起来很乏味。所以我试着做一个短一点的,但我不明白为什么它不起作用。谢谢Javascript嵌套循环问题?,javascript,loops,cryptography,frequency,Javascript,Loops,Cryptography,Frequency,我试图创建一小块javascript来计算一段文本中每个字母的数量,供个人使用。我有一个以前的版本,每个字母都有一个单独的循环,它可以工作,但是相当长,而且创建起来很乏味。所以我试着做一个短一点的,但我不明白为什么它不起作用。谢谢 var text = prompt("Enter Text",""); // Remove Spaces var text = text.toUpperCase(); // Get the Text Length var textL = text.length;
var text = prompt("Enter Text","");
// Remove Spaces
var text = text.toUpperCase();
// Get the Text Length
var textL = text.length;
// Create the Hashtable
var hashtable = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
// Define the Latin Alphabet
var alphabet = "abcdefghijklmnopqrstuvwxyz";
// Nested loop to find frequencies and input them into the hashtable
for (d=0; d<=25; d++) {
for (i=0; i<=textL; i++){
if (text.charAt(i) === alphabet.charAt(d)){
hashtable[d] = hashtable[d] + 1;
}
}
}
var text=prompt(“输入文本”和“”);
//删除空格
var text=text.toUpperCase();
//获取文本长度
var textL=text.length;
//创建哈希表
var hashtable=新数组(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
//定义拉丁字母表
var alphabet=“abcdefghijklmnopqrstuvxyz”;
//嵌套循环以查找频率并将其输入哈希表
对于(d=0;d如果您愿意支持ECMAScript 5,可以使用新的map
或reduce
来获得更小的代码位
给定一个字符串,您可以拆分它,将其转换为一个数组。您需要事先删除任何空白。替换(/\s/g',)
,然后reduce
将迭代每个字母并返回一个结果。结果可以保存在一个对象中,每个属性名称都是字母
var str = "SampleText".toLowerCase().replace(/\s/g,'');
var counts = str.split('').reduce(function(acc, x) {
acc[x] = (acc[x] || 0) + 1;
return acc;
}, {});
输出:
{ a: 1,
e: 2,
l: 1,
m: 1,
p: 1,
s: 1,
t: 2,
x: 1 }
您正在将字符串转换为大写,然后将其与小写字母表进行比较。请将=新数组(0,0,
替换为=[]
,然后将哈希表[d]=0;
放入循环中。我一定会替换新数组(0,0…有这个,但我可以问一下为什么吗?我不知道我是如此愚蠢以至于要比较这两个。非常感谢!