我正在使用this方法在javascript中制作人工“哈希映射”。我所瞄准的只是键值对,实际运行时间并不重要。下面的方法工作正常。
还有其他方法可以循环使用吗?
for (var i in a_hashMap[i]) {
console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
}
我遇到一个问题,当第一个键只包含一个条目时,它会在第一个键后输出一堆未定义的键。我有一种感觉,因为代码是在一个使用i的循环中,即使我在调试时也不应该发生。我也无法改变i,因为for循环似乎根本不理解替换的var。
任何想法?
答案 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]);
}