Ответ 1
for (var i in a_hashmap[i])
неверно. Это должно быть
for (var i in a_hashmap)
что означает "перебирать свойства a_hashmap
, присваивая каждому имени свойства по очереди i
"
Я использую этот метод для создания искусственных "хэшмапов" в javascript. Все, к чему я стремился, являются ключевыми парами значений, фактическое время выполнения не имеет значения. Метод ниже работает отлично.
Есть ли какие-либо другие способы для этого?
for (var i in a_hashMap[i]) {
console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
}
Я столкнулся с проблемой, когда это выводит кучу undefined ключей после первого ключа, когда массив содержит только одну запись. У меня такое чувство, потому что код находится внутри цикла, который использует i, хотя, когда я следую в отладке, это не должно происходить. Я также не могу изменить i, поскольку цикл for, кажется, вообще не понимает замененный var.
Любые идеи?
for (var i in a_hashmap[i])
неверно. Это должно быть
for (var i in a_hashmap)
что означает "перебирать свойства a_hashmap
, присваивая каждому имени свойства по очереди i
"
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
$.each( hashMap, function(index,value){
console.log("Index = " + index + " value = " + value);
})
Вы имеете в виду
for (var i in a_hashmap) { // Or `let` if you're a language pedant :-)
...
}
i
- undefined, когда настройка for-loop устанавливается.
Итерация по карте в ваниле 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.
}
}
Попробуйте это для правильной печати консоли...
for(var i in a_hashMap) {
if (a_hashMap.hasOwnProperty(i)) {
console.log('Key is: ' + i + '. Value is: ' + a_hashMap[i]);
}
}