0

我有这个函数女巫返回一个对象,其中包含字符串中每个字符的所有出现

function count(str){
  var arr = {},
      i = str.length,
      j;
  while( i-- ){
    j = arr[str[i]];
    if(arr[str[i]] = j){
      arr[str[i]] = j+1;
    }
    else arr[str[i]] = 1;
  }
  return arr;
}
console.log(count("ra ta ta ratata"));

返回的值是 {a: 6, t: 4, r: 2, : 3} 如何组合这些值以返回一个字符串,其字符按出现次数排序,它应该返回“aaaaaatttt rr”

4

1 回答 1

1

像这样的东西?

var o = {a: 6, t: 4, r: 2, z : 3},
    letters = Object.keys(o).sort(function (a, b) {
        return o[b] - o[a];
    }).reduce(function (s, key) {
        return s += Array(o[key] + 1).join(key);
    }, '');

console.log(letters); //aaaaaattttzzzrr

请注意,这Object.keys可能不受支持,但您可以使用 shim 或简单地通过执行以下操作来收集密钥:

var keys = [], k;

for (k in obj) {
    if (obj.hasOwnProperty(k)) {
        keys.push(k);
    }
}
于 2013-09-13T12:46:46.500 回答