Я пытаюсь переписать эту программу поиска частоты в Javascript. Вот код Java:Использование кодов символов для получения частоты слов в строке, JavaScript
public class frequency {
public static void main(String[] args){
String S = "Temple University";
int[] p = new int[256];
for (char c :S.toCharArray()) {
p[c]++;
System.out.println(c +" shows up "+p[c] + " times");
}
Выход:
T shows up 1 times
e shows up 1 times
m shows up 1 times
p shows up 1 times
l shows up 1 times
e shows up 2 times
shows up 1 times
U shows up 1 times
n shows up 1 times
i shows up 1 times
v shows up 1 times
e shows up 3 times
r shows up 1 times
s shows up 1 times
i shows up 2 times
t shows up 1 times
y shows up 1 times
Однако моя реализация JavaScript не работает на всех:
function frequency(){
s = "Temple University";
str = s.split('');
p = [];
p.length = 256;
console.log("start");
for(c in str){
p[c]++;
console.log("inside" + c);
console.log(String.fromCharCode(c) + " shows up " + p[c] + "times");
}
}
Это поздно я пытался фигуры почему этот код JavaScript не работает, поэтому я сожалею, если этот пост кажется неполированным.
Мне нравится понимание, которое дает ваш ответ, однако, когда я запускаю ваш код, все возвращается с частотой 1? Также вы могли бы подробнее рассказать о том, почему объект должен использоваться по массиву в этом случае. Почему объект лучше подходит для подсчета уникальных значений, есть ли преимущества в производительности для этого? – coderrick
Одной из основных причин использования объекта является то, что массивы обычно используются в качестве коллекций, которые должны быть добавлены с помощью 'push' и' unshift', а затем повторяются с помощью цикла 'for' или' forEach'. Поэтому массив рассматривается как группа значений, каждая из которых имеет последовательный индекс. То, как вы это делаете, индексы не обязательно будут последовательными, и поэтому невозможно полноценно перебирать массив. Производительность на самом деле не проблема. – furkle
@coderrick Кроме того, в коде была небольшая опечатка - теперь она должна работать. – furkle