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 回答