如何根据数据数组中的count字段对数据进行排序?

时间:2018-04-05 19:34:43

标签: javascript

{{1}}

它返回一个由字符及其计数组成的数组。我想按计数的降序排列这些。该怎么办?

4 个答案:

答案 0 :(得分:0)

您可以对time数组进行排序,并使用属性data将delta作为返回值。

count

data.sort((a, b) => b.count - a.count);
function getFrequency(str){
    var sorted = str.split("").sort(),
        data = [],
        i,
        last;

    for (i = 0; i < sorted.length; i++){
        last = data[data.length - 1];
        if (last && last.character === sorted[i]) {
            last.count++;
        } else {
            data.push({ character: sorted[i], count: 1 });
        }
    }
    return data.sort((a, b) => b.count - a.count);
}

console.log(getFrequency('zzzwwwwwabcdabaa'))

答案 1 :(得分:0)

根据data prop。

排序count

&#13;
&#13;
function getFrequency(str){
    var sorted = str.split("").sort();
    var data = [];
    for(var i = 0; i <sorted.length; i++){
        var last = data[data.length - 1]
        if(last && last.character === sorted[i]) last.count++;
        else data.push({character : sorted[i], count: 1});
    }
    
    data = data.sort(function(a,b){
         return b.count - a.count
    });

    return data;
}

console.log(  getFrequency('aaaabddyww') )
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用reduce()为每个字符创建一个对象,并将其添加到数组中。

&#13;
&#13;
function getFrequency(str) {
  var chars = str.split("");
  return chars.reduce((a, c) => {
    var f = a.find(e => e.character === c);
    if (f) f.count++;
    else a.push({
      character: c,
      count: 1
    });
    return a;
  }, []);
}

console.log(getFrequency('zzzwwwwwabcdabaa'))
&#13;
&#13;
&#13;

答案 3 :(得分:0)

Reduce将字符串转换为字符和计数对象。使用Object.values()转换为数组,然后按b.count - a.count排序:

&#13;
&#13;
function getFrequency(str) {
  return Object.values(str.split('')
    .reduce(function(r, c) {
      r[c] = r[c] || { character: c, count: 0 };
      r[c].count += 1;
      return r;
    }, Object.create(null))
  ).sort(function(a, b) {
    return b.count - a.count;
  });
}

console.log(getFrequency('who let the dogs out who who'));
&#13;
&#13;
&#13;