There is hashmap in javascript, and the method to implement hashmap is "function HashMap(){this.map = {};}HashMap.prototype = {put : function...}".
The operating environment of this article: windows7 system, javascript version 1.8.5, DELL G3 computer
Is there hashmap in javascript?
Implementation of HashMap in JavaScript
Implementation of Map interface based on hash table. This implementation provides all optional mapping operations and allows null values and null keys. (The HashMap class is much the same as a Hashtable, except that it is not synchronized and allows null.) This class does not guarantee the order of the map, and in particular it does not guarantee that the order is immutable. This implementation provides stable performance for basic operations (get and put), assuming that the hash function distributes elements appropriately across buckets. The time required to iterate over a collection view is proportional to the "capacity" (number of buckets) of the HashMap instance and its size (number of key-value mappings).
So, if iteration performance is important, don't set the initial capacity too high (or the loading factor too low).
var emojMap = ["[笑脸]", "[微笑]", "[喜欢]", "[飞吻]", "[尖叫]" , "[大哭]", "[哭笑不得]", "[墨镜]", "[饿了]", "[发呆]", "[沉思]", "[不屑]", "[鬼脸]", "[得意]", "[发怒]", "[眨眼]", "[汗]", "[舒服]", "[糟糕]", "[张嘴]", "[口罩]", "[没有嘴]", "[恶魔]", "[睡觉]", "[困乏]", "[难受]", "[调皮]", "[倔强]", "[困惑]", "[天使]", "[不看]", "[不听]", "[不说]", "[祈祷]", "[剪刀手]", "[拳头]", "[楼上]", "[好的]", "[赞]", "[鄙视]", "[鼓掌]", "[星星]", "[心]", "[心碎]", "[满分]", "[钱袋]", "[便便]", "[鬼魂]", "[眼睛]", "[鼻子]", "[耳朵]", "[嘴巴]", "[舌头]", "[猪]", "[狗]", "[猴子]", "[小马]", "[熊猫]", "[熊]", "[外星人]" ];
This number assembles the Emoji recognition data agreed during our development process and sends it to the server side
eg: I am HelloWord![Smile]Format
We need to parse data in the format of "[XX]" to match the corresponding image
In view of the operation of HashMap, we need to encapsulate the common operation methods
function HashMap(){ this.map = {}; } HashMap.prototype = { put : function(key , value){// 向Map中增加元素(key, value) this.map[key] = value; }, get : function(key){ //获取指定Key的元素值Value,失败返回Null if(this.map.hasOwnProperty(key)){ return this.map[key]; } return null; }, remove : function(key){ // 删除指定Key的元素,成功返回True,失败返回False if(this.map.hasOwnProperty(key)){ return delete this.map[key]; } return false; }, removeAll : function(){ //清空HashMap所有元素 this.map = {}; }, keySet : function(){ //获取Map中所有KEY的数组(Array) var _keys = []; for(var i in this.map){ _keys.push(i); } return _keys; } }; HashMap.prototype.constructor = HashMap;
The above is the HashMap operation method we encapsulate.
At first I thought of several solutions, just like the emojiMap array, if the other party sends a message
eg: I am HelloWord! [Smile] Format
var r = /\[(.+?)\]/g; var str = "[笑脸][喜欢]emoji表情"; var txt,url,tpl; for (var i in str.match(r)) { tpl = "<img src='" + i + ".png' >"; str = str.replace(str.match(r)[i],tpl); } console.log(str);
My initial idea was to use split to divide it into an array, and then use replace to replace the corresponding picture. Later I found this solution to emoticon Problems will occur if you send too many and cannot be replaced.
And you need to specify the index position of the array subscript
Later I changed it to the following method:
var hashMap = new HashMap(); //先向hashMap中存入元素 for(var i in emojMap){ hashMap.put(emojMap[i] ,(parseInt(i))+'.png'); } var r = /([^\[\]]+)(?=\])/g; var str = "[笑脸][喜欢]emoji表情"; var txt,url,tpl; for (var i in str.match(r)) { //获取hashMap中对应的Value txt = hashMap.get(str.match(r)[i]) tpl = "<img src='" + i + ".png' >"; str = str.split(m[i]).join(tpl); } str=str.replace(/\[|]/g,''); console.log(str);
The advantage of using HasMap is that there is no need Worry about the location of the key, because each key corresponds to a val.
In this way, it can be perfectly replaced with Emoji pictures for display.
Recommended study: "javascript basic tutorial"
The above is the detailed content of Is there hashmap in javascript?. For more information, please follow other related articles on the PHP Chinese website!