我有这个函数,它会返回一个对象,其中包含字符串
中每个字符的所有出现次数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”
答案 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);
}
}