Loop through a 'Hashmap' in JavaScript
我使用这个方法在JavaScript中制作人工的"哈希图"。我的目标是键值对,实际运行时间并不重要。下面的方法很有效。
有没有其他的方法来循环这个?
1 2 3 | for (var i in a_hashMap[i]) { console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]); } |
我遇到了一个问题,当数组只包含一个条目时,这个问题会在第一个键之后输出一组未定义的键。我有一种感觉,这是因为代码在一个使用i的循环中,即使当我执行调试时,它也不应该发生。我也不能改变我,因为for循环似乎根本不理解被替换的var。
有什么想法吗?
1 | for (var i in a_hashmap[i]) |
号
不正确。应该是
1 | for (var i in a_hashmap) |
这意味着"循环遍历EDOCX1的属性(1),将每个属性名依次分配给
1 2 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]]); } |
。
可以使用jquery函数
1 2 3 | $.each( hashMap, function(index,value){ console.log("Index =" + index +" value =" + value); }) |
你是说
1 2 3 | for (var i in a_hashmap) { // Or `let` if you're a language pedant :-) ... } |
设置for循环时,
尝试此操作以正确打印控制台…
1 2 3 4 5 | for(var i in a_hashMap) { if (a_hashMap.hasOwnProperty(i)) { console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]); } } |
。
在普通javacsript中迭代映射很简单。
1 2 3 4 5 6 7 8 9 10 11 | 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. } } |
。
这是一篇旧文章,但我能想到的一个方法是
1 2 3 | const someMap = { a: 1, b: 2, c: 3 }; Object.keys(someMap) .map(key => 'key is ' + key + ' value is ' + someMap[key]); |
应该使用这种迭代方式吗?这种方法有什么问题吗?