求大神解答个问题,用JS按照顺序压缩统计以下代码

按照顺序压缩统计过 str=“aaaabbbcccddaa”的结果为a4b3c3d2a2

var cm = new charMap();
function charMap(str){
    this.datas = {};
    this.sum=function(){
        $.each(str,function(i,n){
            if(this.datas.n == null){
                this.datas.n =1;
            }else{
                this.datas.n =this.datas.n+1;
            }
        });
    }
    this.toString=function(){
        var strs ="";
        $.each(this.datas,function(i,n){
            strs=strs+i+n;
        });
    }
}

大概方法就是这样 ,随便手打的,细节再处理下就行。

var c,kv={},str="aaaabbbcccddaa";
for(var i=0,j=str.length;i<j;i++)kv[c=str.charAt(i)]=(kv[c]||0)+1;
console.log(kv)

最简单的方法

var str = "aaaabbbcccddaa";
str = str.replace(/(\w)\1+/g,(s,a)=>a+s.length);
console.log(str);