在JavaScript中循环"Hashmap"

myo*_*yol 37 javascript hashmap

我正在使用这种方法在javascript中制作人工"哈希映射".我所瞄准的只是键值对,实际运行时间并不重要.下面的方法工作正常.

还有其他方法可以循环使用吗?

for (var i in a_hashMap[i]) {
    console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
} 
Run Code Online (Sandbox Code Playgroud)

我遇到一个问题,当第一个键只包含一个条目时,它会在第一个键后输出一堆未定义的键.我有一种感觉,因为代码是在一个使用i的循环中,即使我在调试时也不应该发生.我也无法改变i,因为for循环似乎根本不理解替换的var.

任何想法?

jhu*_*man 57

for (var i in a_hashmap[i])
Run Code Online (Sandbox Code Playgroud)

是不正确的.它应该是

for (var i in a_hashmap)
Run Code Online (Sandbox Code Playgroud)

这意味着"循环遍历属性a_hashmap,依次为每个属性名称分配i"

  • 啊,傻我.前一个循环的残余而没有引起注意.这是正确的.谢谢. (2认同)

Ray*_*nos 11

for (var i = 0, keys = Object.keys(a_hashmap), ii = keys.length; i < ii; i++) {
  console.log('key : ' + keys[i] + ' val : ' + a_hashmap[keys[i]]);
}
Run Code Online (Sandbox Code Playgroud)


spr*_*aff 6

你的意思是

for (var i in a_hashmap) { // Or `let` if you're a language pedant :-)
   ...
}
Run Code Online (Sandbox Code Playgroud)

i 当for循环设置时,未定义.


dch*_*tri 6

您可以使用JQuery函数

$.each( hashMap, function(index,value){
 console.log("Index = " + index + " value = " + value); 
})
Run Code Online (Sandbox Code Playgroud)


小智 5

试试这个是为了正确打印控制台......

for(var i in a_hashMap) {
    if (a_hashMap.hasOwnProperty(i)) {
        console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)