Terdapat peta hash dalam JavaScript dan kaedah untuk melaksanakan peta hash ialah "function HashMap(){this.map = {};}HashMap.prototype = {put : function...}".
Persekitaran pengendalian artikel ini: sistem windows7, versi javascript 1.8.5, komputer DELL G3
Adakah terdapat peta cincang dalam javascript?
Pelaksanaan HashMap dalam JavaScript
Pelaksanaan antara muka Peta berdasarkan jadual cincang. Pelaksanaan ini menyediakan semua operasi pemetaan pilihan dan membenarkan nilai nol dan kekunci nol. (Kelas HashMap hampir sama dengan Hashtable, kecuali ia tidak disegerakkan dan membenarkan null.) Kelas ini tidak menjamin susunan peta, dan khususnya ia tidak menjamin bahawa susunan itu tidak berubah. Pelaksanaan ini menyediakan prestasi yang stabil untuk operasi asas (dapat dan letak), dengan mengandaikan bahawa fungsi cincang mengedarkan elemen dengan sewajarnya merentas baldi. Masa yang diperlukan untuk mengulangi paparan koleksi adalah berkadar dengan "kapasiti" (bilangan baldi) tika HashMap dan saiznya (bilangan pemetaan nilai kunci).
Jadi, jika prestasi lelaran adalah penting, jangan tetapkan kapasiti awal terlalu tinggi (atau faktor pemuatan terlalu rendah).
var emojMap = ["[笑脸]", "[微笑]", "[喜欢]", "[飞吻]", "[尖叫]" , "[大哭]", "[哭笑不得]", "[墨镜]", "[饿了]", "[发呆]", "[沉思]", "[不屑]", "[鬼脸]", "[得意]", "[发怒]", "[眨眼]", "[汗]", "[舒服]", "[糟糕]", "[张嘴]", "[口罩]", "[没有嘴]", "[恶魔]", "[睡觉]", "[困乏]", "[难受]", "[调皮]", "[倔强]", "[困惑]", "[天使]", "[不看]", "[不听]", "[不说]", "[祈祷]", "[剪刀手]", "[拳头]", "[楼上]", "[好的]", "[赞]", "[鄙视]", "[鼓掌]", "[星星]", "[心]", "[心碎]", "[满分]", "[钱袋]", "[便便]", "[鬼魂]", "[眼睛]", "[鼻子]", "[耳朵]", "[嘴巴]", "[舌头]", "[猪]", "[狗]", "[猴子]", "[小马]", "[熊猫]", "[熊]", "[外星人]" ];
Nombor ini mengumpulkan data pengecaman Emoji yang dipersetujui semasa proses pembangunan kami dan menghantarnya ke bahagian pelayan
cth : Saya HelloWord! Format [Senyuman]
Kami perlu menghuraikan data dalam format "[XX]" untuk memadankan imej yang sepadan
Memandangkan pengendalian HashMap, kami perlu merangkum kaedah operasi biasa
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;
Di atas ialah kaedah pengendalian HashMap terkapsul kami.
Pada mulanya saya memikirkan beberapa penyelesaian, sama seperti susunan emojiMap, jika pihak lain menghantar mesej
cth: Saya HelloWord 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);
Idea awal saya ialah menggunakan split untuk membahagikannya kepada tatasusunan, dan kemudian gunakan replace untuk menggantikan yang sepadan Nanti saya dapati Masalah ini akan timbul jika terlalu banyak emotikon disiarkan dalam skema dan tidak boleh diganti.
Dan kedudukan indeks subskrip tatasusunan perlu ditentukan
Kemudian saya menukar ke kaedah berikut:
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);
Gunakan HasMap Kelebihannya ialah anda tidak perlu risau tentang lokasi kunci, kerana setiap kekunci sepadan dengan val.
Dengan cara ini, ia boleh digantikan dengan sempurna dengan paparan gambar Emoji.
Kajian yang disyorkan: "Tutorial Asas JavaScript"
Atas ialah kandungan terperinci Adakah terdapat peta hash dalam javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!