Próbuję użyć hashtable, dzięki czemu mogę wybrać określony obiekt przechowywany w tablicy/obiektu. Mam jednak problem z zapętlaniem się obiektu.Iterowanie po obiekcie 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/
Jak widać w TEST 3
który używa obiektu pin
do przechowywania danych, jestem coraz undefined
gdy zapętlenie przez obiekt pin
.
Jaki jest prawidłowy sposób na przejście przez pin
?
EDIT
Co się stanie, jeśli zamiast tylko pin[6] = '6'
robię pin [6] = przedmiot i chcę pętli przez wszystkich swoich id
właściwości? Rzeczywisty fragment kodu, co robię ...
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
powyżej zwraca niezdefiniowana, a jeśli zrobię console.log(marker)
zamian otrzymuję wartość marker.listing_id
. Przepraszam, zaczynam się mylić!
Udało mi się go uruchomić z $.each(markers, function(i, marker){});
, ale dlaczego powyższy for..in
nie działa?
możliwość dodawania członków w indeksach 6, 7 i 8, ale iteracji od 0 do 2. Lepszą strategią byłoby iterować od '0' do' length-1' i testować, czy członkowie istnieją przed próbą użycia. – RobG
jesteś mylący _arrays_ z _objects_. – c69
@ c69-tablice są obiektami; ;-) Problem OP próbuje uzyskać dostęp do nieistniejących właściwości. – RobG