Цикл "Hashmap" в JavaScript - PullRequest
       3

Цикл "Hashmap" в JavaScript

37 голосов
/ 19 июля 2011

Я использую этот метод для создания искусственных «хеш-карт» в javascript.Все, к чему я стремлюсь, это пары «ключ | значение», фактическое время выполнения не имеет значения.Метод ниже работает нормально.

Есть ли другие способы пройти через это?

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

Я сталкиваюсь с проблемой, когда после первого ключа выводится группа неопределенных ключей,массив содержит только одну запись.У меня есть ощущение, что это потому, что код находится внутри цикла, который использует i, хотя, когда я следую в отладке, это не должно происходить.Я также не могу изменить i, поскольку цикл for, кажется, вообще не понимает замененную переменную.

У кого-нибудь есть идеи?

Ответы [ 7 ]

57 голосов
/ 19 июля 2011
for (var i in a_hashmap[i])

не правильно. Должно быть

for (var i in a_hashmap)

, что означает «перебирать свойства a_hashmap, присваивая каждому имени свойства по очереди i»

11 голосов
/ 19 июля 2011
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]]);
}
6 голосов
/ 19 июля 2011

Вы можете использовать функцию JQuery

$.each( hashMap, function(index,value){
 console.log("Index = " + index + " value = " + value); 
})
6 голосов
/ 19 июля 2011

Вы имеете в виду

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

i не определено, когда настроен цикл for.

5 голосов
/ 30 июня 2015

Попробуйте, чтобы правильно печатать консоль ...

for(var i in a_hashMap) {
    if (a_hashMap.hasOwnProperty(i)) {
        console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
    }
}
4 голосов
/ 27 сентября 2013

Итерация по карте в ванильном 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.


          }
  }
0 голосов
/ 20 апреля 2018

Это старый пост, но я могу думать только о том,

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

Следует ли использовать этот способ итерации? Есть ли проблемы с этим подходом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...