Maison > interface Web > Questions et réponses frontales > Existe-t-il un hashmap en javascript ?

Existe-t-il un hashmap en javascript ?

藏色散人
Libérer: 2021-11-18 11:13:43
original
3832 Les gens l'ont consulté

Il existe un hashmap en javascript, et la méthode pour implémenter hashmap est "function HashMap(){this.map = {};}HashMap.prototype = {put: function...}".

Existe-t-il un hashmap en javascript ?

L'environnement d'exploitation de cet article : système windows7, javascript version 1.8.5, ordinateur DELL G3

Y a-t-il un hashmap en javascript ?

Implémentation de HashMap en JavaScript

Qu'est-ce que HashMap ?

Implémentation de l'interface Map basée sur une table de hachage. Cette implémentation fournit toutes les opérations de mappage facultatives et autorise les valeurs nulles et les clés nulles. (La classe HashMap est à peu près la même chose qu'une Hashtable, sauf qu'elle n'est pas synchronisée et autorise null.) Cette classe ne garantit pas l'ordre de la carte, et en particulier elle ne garantit pas que l'ordre soit immuable. Cette implémentation offre des performances stables pour les opérations de base (get et put), en supposant que la fonction de hachage distribue les éléments de manière appropriée entre les compartiments. Le temps requis pour parcourir une vue de collection est proportionnel à la « capacité » (nombre de compartiments) de l'instance HashMap et à sa taille (nombre de mappages clé-valeur).
Donc, si les performances itératives sont importantes, ne définissez pas la capacité initiale trop élevée (ou le facteur de chargement trop bas).

Implémentation de HashMap en JavaScript
    var emojMap = ["[笑脸]", "[微笑]", "[喜欢]", "[飞吻]", "[尖叫]"
        , "[大哭]", "[哭笑不得]", "[墨镜]", "[饿了]", "[发呆]",
        "[沉思]", "[不屑]", "[鬼脸]", "[得意]", "[发怒]",
        "[眨眼]", "[汗]", "[舒服]", "[糟糕]", "[张嘴]",
        "[口罩]", "[没有嘴]", "[恶魔]", "[睡觉]", "[困乏]",
        "[难受]", "[调皮]", "[倔强]", "[困惑]", "[天使]",
        "[不看]", "[不听]", "[不说]", "[祈祷]", "[剪刀手]",
        "[拳头]", "[楼上]", "[好的]", "[赞]", "[鄙视]",
        "[鼓掌]", "[星星]", "[心]", "[心碎]", "[满分]",
        "[钱袋]", "[便便]", "[鬼魂]", "[眼睛]", "[鼻子]",
        "[耳朵]", "[嘴巴]", "[舌头]", "[猪]", "[狗]",
        "[猴子]", "[小马]", "[熊猫]", "[熊]", "[外星人]"
    ];
Copier après la connexion

Ce numéro rassemble les données de reconnaissance Emoji convenues lors de notre processus de développement et les envoie au côté serveur

Par exemple : Je suis HelloWord ! Format

Nous devons. analyser en " [XX]"Les données dans ce format sont utilisées pour correspondre aux images correspondantes

Méthodes courantes de HashMap

Compte tenu du fonctionnement de HashMap, nous devons encapsuler les méthodes de fonctionnement courantes

    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;
Copier après la connexion

Ce qui précède est notre encapsulé Méthode de fonctionnement HashMap.

Utilisez HashMap pour développer une bibliothèque d'expressions Emoji

Au début, j'ai pensé à plusieurs solutions, tout comme le tableau emojiMap, si l'autre partie envoie un message

par exemple : Je suis HelloWord Format

    var r = /\[(.+?)\]/g;
    var str = "[笑脸][喜欢]emoji表情";
    var txt,url,tpl;
    for (var i in str.match(r)) {
        tpl = "<img src=&#39;" + i + ".png&#39; >";
        str = str.replace(str.match(r)[i],tpl);
    }
    console.log(str);
Copier après la connexion

Moi L'idée initiale était d'utiliser split pour diviser le tableau en tableaux, puis d'utiliser replace pour remplacer les images correspondantes. Plus tard, j'ai découvert que cette solution poserait des problèmes si trop d'émoticônes étaient publiées et ne pouvaient pas être remplacées. la position d'index de l'indice du tableau doit être spécifiée
Plus tard, je passe à la méthode suivante :

    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=&#39;" + i + ".png&#39; >";
        str = str.split(m[i]).join(tpl);
    }
    str=str.replace(/\[|]/g,'');
    console.log(str);
Copier après la connexion

L'avantage d'utiliser HasMap est que vous n'avez pas à vous soucier de l'emplacement de la clé, car chaque clé correspond à un val.

De cette façon, vous pouvez parfaitement le remplacer par des images Emoji à afficher.

Apprentissage recommandé : "

Tutoriel sur les bases de JavaScript

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal