Я пытаюсь использовать хеш-таблицу, поэтому я могу выбрать конкретный объект, хранящийся в массиве/объекте. Тем не менее, у меня возникает проблема, связанная с объектом.Итерация через объект hashtable
var pins= {};
pins[6] = '6';
pins[7] = '7';
pins[8] = '8';
$('#result3').append('<div>Size: ' + Object.size(pins) + '</div>');
for(var i = 0; i < Object.size(pins); i++) {
$('#result3').append('<div>' + pins[i] + '</div>');
}
JSFiddle: http://jsfiddle.net/7TrSU/
Как вы можете видеть в TEST 3
, который использует объект pin
для хранения данных, я получаю undefined
когда зацикливание через объект pin
.
Каков правильный путь для прохождения через pin
?
EDIT
Что произойдет, если вместо того, чтобы просто pin[6] = '6'
, я делаю контактный [6] = объект, и я хочу, чтобы перебрать все их id
свойства? Фактический фрагмент кода, что я делаю ...
for(var i = 0; i < json.length; i++) {
markerId = json[i].listing_id
// Place markers on map
var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
var marker = new google.maps.Marker({
listing_id: markerId,
position: latLng,
icon: base_url + 'images/template/markers/listing.png',
});
markers[markerId] = marker;
}
for(var marker in markers) {
console.log('marker ID: ' + marker.listing_id);
mc.addMarker(marker);
}
console.log
выше возвращает неопределенное значение, и если я console.log(marker)
вместо этого, я получаю значение marker.listing_id
. Извините, я смущаюсь!
Мне удалось заставить его работать с $.each(markers, function(i, marker){});
, но почему же for..in
не работает?
Вы добавляете пользователей на индексы 6, 7 и 8, но итерация от 0 до 2. Лучшей стратегией будет итерации от '0' до' length-1' и проверьте, существуют ли элементы, прежде чем пытаться их использовать. – RobG
Вы сбиваете с толку _arrays_ с _objects_. – c69
@ c69-массивы - это объекты, ;-) Проблема OP пытается получить доступ к несуществующим свойствам. – RobG