Estoy tratando de usar una tabla hash para poder seleccionar un objeto específico almacenado en una matriz/objeto. Sin embargo, estoy teniendo un problema al pasar por un objeto.Iterar a través de una tabla hash de objetos
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/
Como se puede ver en TEST 3
que utiliza objeto pin
para almacenar los datos, que estoy recibiendo undefined
cuando un bucle a través del objeto pin
.
¿Cuál es la forma correcta de pasar por pin
?
EDITAR
¿Qué pasa si en lugar de simplemente pin[6] = '6'
, hago pasador [6] = un objeto y quiero colocar a través de las propiedades de todos sus id
? código real fragmento de lo que estoy haciendo ...
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);
}
El console.log
anterior devuelve indefinido, y si lo hago console.log(marker)
lugar, consigo el valor de marker.listing_id
. Lo siento, estoy confundido!
me las arreglé para conseguir que funcione con $.each(markers, function(i, marker){});
pero ¿por qué el for..in
anterior no funciona?
Está añadiendo miembros a índices 6, 7 y 8, pero la iteración de 0 a 2. Una mejor estrategia sería para iterar de '0' a' length-1' y probar si los miembros existen antes de intentar usarlo. – RobG
está confundiendo _arrays_ con _objetos_. – c69
@ c69-las matrices son objetos, ;-) El problema de OP es tratar de acceder a las propiedades que no existen. – RobG