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サポートされていない可能性がありますが、シムを使用するか、次のようにしてキーを収集することができます。

var keys = [], k;

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