获取字符重复出现次数,可返回出现次数相同的不同字符

class RepeatStr {
    constructor(str) {
        this.str = str;
        this.resultObj = {};
        this.resultArray = [];
        this.maxNumber = null;
        this.elArray = null;
    }

    getStrArr() {
        return this.str.split('').reduce(function (prev, next) {
            prev[next] = (prev[next] + 1) || 1;
            return prev;
        }, {});
    }

    getRepeatStrArr() {
        this.resultObj = this.getStrArr();
        for (let key in this.resultObj) {
            this.resultArray.push({[key]: this.resultObj[key]})
        }
    }

    getElArr() {
        this.getRepeatStrArr();
        this.maxNumber = Math.max.apply(null, Object.values(this.resultObj))
        this.elArray = this.resultArray.filter(e => {
            let key = Object.keys(e)[0];
            return e[key] === this.maxNumber;
        })
    }

    output() {
        this.getElArr();
        let str = '', num;
        if (!this.elArray.length) {
            console.log('字符串为空');
            return;
        }
        this.elArray.forEach(e => {
            let key = Object.keys(e)[0];
            str += key + ','
            num = e[key]
        })
        console.log(`出现次数最多的字符是${str} 出现次数是${num}次`)
    }

}

new RepeatStr('dsajkldsalkjdsaazzz2222').output();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。