Подтвердить что ты не робот

Прокрутите "Хашмап" в JavaScript

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

Есть ли какие-либо другие способы для этого?

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

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

Любые идеи?

4b9b3361

Ответ 1

for (var i in a_hashmap[i])

неверно. Это должно быть

for (var i in a_hashmap)

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

i - undefined, когда настройка for-loop устанавливается.

Ответ 5

Итерация по карте в ваниле Javacsript проста.

var map = {...};//your map defined here
for(var index in map)
 {
       var mapKey = index;//This is the map key.
       for(i = 0 ; i < map[mapKey].length ; i++)
        {
              var mapKeyVal = map[mapKey];//This is the value part for the map key.


          }
  }

Ответ 6

Попробуйте это для правильной печати консоли...

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