{{1}}
它返回一个由字符及其计数组成的数组。我想按计数的降序排列这些。该怎么办?
答案 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
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;
答案 2 :(得分:0)
您可以使用reduce()
为每个字符创建一个对象,并将其添加到数组中。
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;
答案 3 :(得分:0)
Reduce将字符串转换为字符和计数对象。使用Object.values()
转换为数组,然后按b.count - a.count
排序:
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;