ユーザーが段落を入力すると、javascriptは各単語の頻度をカウントし、最大値から最小値まで出力します。私はすでに2つの配列を使って各単語の数を数えます。しかし、カウントと単語が2つの異なる配列に格納されているので、その量に基づいて印刷する方法はわかりません。私を助けてください。ありがとうございました!各文字列のJavascript count frenquencyを最大値から最小値まで出力する
<!DOCTYPE html>
<html>
<head>
<title> practice </title>
<style>
.field{
font-size: 10px;/
width: 400px;
}
</style>
</head>
<body>
<p> This progam will calculate what you want to</p>
<p id="demo"></p>
<p id="result"></p>
<input type="text" id="paragraph" class="field",>
<button onclick="input()"><b>Submit</b></button>
<script>
function input() {
var test = document.getElementById("paragraph").value;
var arr =[];
arr = test.toLowerCase().split(" ");
document.getElementById("demo").innerHTML = arr;
function foo(arr) {
var a = [], b = [], prev;
arr.sort();
for (var i = 0; i < arr.length; i++) {
if (arr[i] !== prev) {
a.push(arr[i]);
b.push(1);
} else {
b[b.length-1]++;
}
prev = arr[i];
}
return [a, b];
}
var result = foo(arr);
document.write('[' + result[0] + ']<br>[' + result[1] + ']')
}
</script>
</body>
</html>
代わりに2つの配列のマップまたはオブジェクトの配列を使用します。 –
既にこのコードをすべて持っているので、 'b'の数を調べるだけで' a'をソートすることができます。しかし、これは非常に悪い解決策であり、実装やメンテナンスが容易ではないかもしれません。非常に簡単な方法は、 'split' - >' reduce' - > 'sort'を実行することで、コード全体を10行未満で実装できるため、完全に書き直すことです。 – vlaz
私は以前にはreduceを使っていません。私はインターネットでそれを調べた。定義は「reduce()メソッドは配列を単一の値に減らす」と述べています。ユーザー入力を個々の単語の配列に分割した後、どのようにreduce()を使用しますか?あなたはそれについてもう少し詳しく説明できますか?ありがとうございました –