在 JavaScript 中循环遍历“Hashmap”

Posted

技术标签:

【中文标题】在 JavaScript 中循环遍历“Hashmap”【英文标题】:Loop through a 'Hashmap' in JavaScript 【发布时间】:2011-10-08 14:13:11 【问题描述】:

我正在使用this 方法在 javascript 中制作人工“哈希图”。我的目标是键|值对,实际运行时间并不重要。下面的方法工作正常。

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

for (var i in a_hashMap[i]) 
    console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
 

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

有人有什么想法吗?

【问题讨论】:

看看这个线程:[Javascript Hashmap Equivalent][1] 希望它对你有所帮助。 [1]:***.com/questions/368280/… 【参考方案1】:

你是说

for (var i in a_hashmap)  // Or `let` if you're a language pedant :-)
   ...

i 在设置 for 循环时未定义。

【讨论】:

没想到to check。我想你是对的。 投反对票? let 除了,这与接受的答案相同:-/ +1 因为这不值得 -1。 @spraff,您可能想要添加更新(编辑答案)说明您在 cmets 中所说的内容。 +1 用于提及“让”。这是 let 的最佳用例。任何投反对票的人,可能都忽略了一个事实,JS 也用于服务器。【参考方案2】:
for (var i in a_hashmap[i])

不正确。应该是

for (var i in a_hashmap)

意思是“遍历a_hashmap的属性,将每个属性名依次分配给i

【讨论】:

【参考方案3】:
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]]);

【讨论】:

这是遍历键和值的巧妙方法。【参考方案4】:

你可以使用JQuery函数

$.each( hashMap, function(index,value)
 console.log("Index = " + index + " value = " + value); 
)

【讨论】:

【参考方案5】:

在 vanilla Javacsript 中遍历地图很简单。

var map = ...;//your map defined here
for(var index in map)
 
       var mapKey = index;//This is the map's key.
       for(i = 0 ; i < map[mapKey].length ; i++)
        
              var mapKeyVal = map[mapKey];//This is the value part for the map's key.


          
  

【讨论】:

【参考方案6】:

试试这个以正确打印控制台...

for(var i in a_hashMap) 
    if (a_hashMap.hasOwnProperty(i)) 
        console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
    

【讨论】:

【参考方案7】:

这是一篇旧帖子,但我能想到的一种方法是

const someMap =  a: 1, b: 2, c: 3 ;
Object.keys(someMap)
.map(key => 'key is ' + key + ' value is ' + someMap[key]);

应该使用这种迭代方式吗?这种方法有什么问题吗?

【讨论】:

【参考方案8】:

要遍历 Hashmap,您需要获取键和值。

const new_Map = new Map();

for (const [key, value] of new_Map.entries()) 
   console.log(`The key is $key and value is $value`);

它应该与键和值中的 hashmap 的键和值一起使用。

【讨论】:

【参考方案9】:

var a_hashMap = a:1,b:2,c:3;

for (var key in a_hashMap) 
    console.log('Key: ' + key + '. Value: ' + a_hashMap[key]);

【讨论】:

以上是关于在 JavaScript 中循环遍历“Hashmap”的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中循环遍历“Hashmap”

在 JavaScript 中循环遍历数组的最快方法是啥?

在 JavaScript 中循环遍历数组的最快方法是啥?

javascript中常见的几种循环遍历

forEach 在javascript中同时循环遍历两个数组[重复]

如何在 Javascript 中循环遍历 HTML 表中的复选框行