0

私はJavascriptアプリケーションに取り組んでいて、解決できない問題に遭遇しました。文字列を受け取り、プロパティ名が文字であり、値がその文字が文字列に現れる頻度であるオブジェクトを返す関数を作成する必要があります。私がこれまでに書いたことは次のとおりです。

function getFrequencies(str) {
    var holder = str;
    var ticker = str;
    var i = 0;
    var j = 0;
    var result = [];

    while (i < holder.length && j < ticker.length) {
        if (holder.charAt(i) < ticker.charAt(j)) {
            i++;
        }
        else if (ticker.charAt(j) < holder.charAt(i)) {
            j++;
        }
        else {
            result.push(holder.charAt(i));
            i++;
            j++;
        }
    }

    return result;
}

これを正しく機能させる方法を理解し、私が間違っていることを教えてくれる人がいれば、私はそれを大いに感謝します。

4

1 に答える 1

0
function getFrequencies(str) {
  var obj = {}, i;
  for (i = 0; i < str.length; i++) {
    if (str.charAt(i) in obj) {
       obj[str.charAt(i)]++;
    } else {
       obj[str.charAt(i)] = 1;
    };
  }
  return obj;
}

または

String.prototype.getFrequencies = function () {
  var obj = {}, i, c;
  for (i = 0; i < this.length; i++) {
    c = this.charAt(i); 
    if (c in obj) {
       obj[c]++;
    } else {
       obj[c] = 1;
    };
  }
  return obj;
}

// usage
var ret = "abcabcieefje".getFrequencies();
于 2012-09-26T03:44:27.213 に答える