Я использую JSBin для записи блока JS-кода для принятия входной строки, затем возвращаю каждую букву, содержащуюся в строке (удаляя повторяющиеся буквы и другие символы), а затем подсчитывая, сколько раз каждая буква использовалась в строке. Я пытаюсь интегрировать регулярное выражение для дополнительной практики.Частота подсчета каждой буквы - javascript
Код, который я написал, не удаляет дубликаты и не учитывает частоту каждого символа. Может кто-нибудь, пожалуйста, скажите мне, что я сделал неправильно?
Вот HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<input type="text" id="input"></input>
<button onclick="count()">Count letters</button>
<br>
<br>
<div id="output">Result</div>
</body>
</html>
Вот JS:
function count() {
var x = document.getElementById("input").value.toString();
var y = "";
var z = [];
//Removal of white spaces and other characters.
x = x.replace(/[^a-z]/gi,"");
//Elimination of duplicate letters.
for (var i = 0; i < x.length; i++) {
if (/x.charAt(i)/i.test(y) === false) {
y += x.charAt(i);
}
}
//Count how many of each letter exists within the input string.
for(var i = 0; i < y.length; i++) {
for (var j = 0; j < y.length; j++) {
var freq = 0;
if (y.charAt(i) == y.charAt(j)) {
freq += 1;
}
z.push(freq);
}
}
//Write result to HTML document.
for (var i = 0; i < y.length; i++) {
document.write(y.charAt(i));
document.write(", ");
document.write(z[i]);
document.write("<br>");
}
}
Большое вам спасибо за вашу помощь!
Пожалуйста, пожалуйста, пожалуйста, не используйте имена переменных односимвольные. 'x',' y' и 'z' не являются описательными, и даже вы не сможете понять, что они означают через месяц. Кроме того, почему вы удаляете «дубликаты» писем? Что именно это значит? Что вы пытаетесь удалить? –
Понял - я просто пишу быстрый код как практику, а затем удаляю. Я бы использовал более описательные переменные для проектов, которые я намерен сохранить. Извините за любую путаницу. – CJamz
Чтобы удалить дубликаты, по существу, я хотел бы принять «привет» и преобразовать в «helo» - тогда вывод будет считать h 1, e 1, l 2, o 1 - поскольку исходная строка имела два экземпляра буквы l , и один экземпляр друг друга. – CJamz