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

Sort object elements and print out a string

本文关键字:字符串 一个 打印 元素 对象 排序      更新时间:2023-09-26

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

次数
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"

像这样的东西?

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);
    }
}