【问题标题】:Loop through a 'Hashmap' in JavaScript在 JavaScript 中循环遍历“Hashmap”
【发布时间】: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


【解决方案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]);
              }

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-10-15
                • 2010-12-22
                • 2018-04-08
                • 2012-07-20
                • 2011-08-01
                • 1970-01-01
                • 2017-06-21
                相关资源
                最近更新 更多