对对象元素排序并打印出一个字符串

时间:2013-09-13 12:41:06

标签: javascript string object

我有这个函数,它会返回一个对象,其中包含字符串

中每个字符的所有出现次数
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”

1 个答案:

答案 0 :(得分: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可能不受支持,但您可以使用垫片或只是通过执行以下操作来收集密钥:

var keys = [], k;

for (k in obj) {
    if (obj.hasOwnProperty(k)) {
        keys.push(k);
    }
}