ES6的map统计字符串中出现最多的字母

来源:互联网 发布:农大网络教学综合平台 编辑:程序博客网 时间:2024/05/01 14:34

在ES6中加入了两种数据结构,一个set和一个map,使js的操作更加简便。


map中的数据都是键值对的形式,和其他语言不同的是,它的键可以为任意形式的,包括undefined和NaN这种特殊的类型。

var map = new Map([[undefined, 1], [NaN, 2]]);map.forEach(function (value, key){    console.log(value, key);});

这里写图片描述

从上面的例子可以看出,它可以将数组元素转换为键值对的形式,当然数组元素也要是数组才行。

如果两个键相同,后一个将会覆盖前一个的值

var map = new Map();for (var i = 0; i < 5; i++){    map.set("a", i);}map.forEach(function (value, key){    console.log("值:"+ value + "  键:"+ key);});

这里写图片描述
可以看出,在上面的代码中,map中的键为字符a,后一个值覆盖前一个的值,接下来就用这种特性来实现,统计字符串中出现最多字母的算法。

var str = "gchdfcgdfdgfyedu";function countNum(str){    var max = 0;    var a;    var map = new Map();    for (var i = 0; i < str.length; i++){            /*如果这个键的值不存在就返回undefined*/        if (map.get(str[i]) != undefined){            var count = map.get(str[i]) + 1;            map.set(str[i], count);            if (count > max){                max = count;                a = str[i];            }        }        else{            map.set(str[i], 1);        }    }    map.forEach(function (value, key, map){        console.log(value, key, map);    });    return a;}console.log(countNum(str));

这里写图片描述


0 0
原创粉丝点击