在JavaScript中循环“Hashmap”

时间:2011-07-19 14:25:54

标签: javascript hashmap

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

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

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

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

任何想法?

10 个答案:

答案 0 :(得分:57)

for (var i in a_hashmap[i])

不正确。它应该是

for (var i in a_hashmap)

表示“循环遍历a_hashmap的属性,将每个属性名称依次分配给i

答案 1 :(得分:10)

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]]);
}

答案 2 :(得分:6)

你的意思是

for (var i in a_hashmap) { // Or `let` if you're a language pedant :-)
   ...
}
循环设置时,

i未定义。

答案 3 :(得分:6)

您可以使用JQuery函数

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

答案 4 :(得分:5)

尝试此操作以正确打印控制台...

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

答案 5 :(得分:4)

通过vanilla中的地图迭代Javascript很简单。

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 :(得分:0)

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

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

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

答案 7 :(得分:0)

哈希图可能很棘手,但非常有用。当像对象一样遍历一个对象时,每个键都是带有[key,value]的元组:

for (let key of map) {
    console.log('Key is: ' + key[0] + '. Value is: ' + key[1]);
}

答案 8 :(得分:0)

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

let str = "I want to eat Banana Apple and Mango";
var array1 = str.split(" ");
var array2 = ["Banana", "Apple", "Mango", "hut", "gut"];

const res = array1.reduce((accumulator, currentVal, i) => {
  const itemExist = array2.includes(currentVal);
  const lastIndex = accumulator.length - 1;
  if(i !== 0 && !itemExist && accumulator[lastIndex]) {
    accumulator[lastIndex] = accumulator[lastIndex] + " " + currentVal;
  } else {
    accumulator.push(itemExist ? "" : currentVal);
  }
  return accumulator;
}, []);

console.log(res);

它应该在 key 和 value 中使用 hashmap 的键和值。

答案 9 :(得分:0)

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

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