En javascript, una matriz de valores clave se almacena como un objeto. Hay cosas como matrices en javascript, pero también se consideran objetos de alguna manera, compruebe esta respuesta de los chicos: ¿por qué puedo agregar propiedades con nombre a una matriz como si fuera un objeto?
Las matrices se ven típicamente usando la sintaxis de corchetes, y los objetos (matrices "clave => valor") usan la sintaxis de corchetes, aunque puede acceder y establecer las propiedades de los objetos usando la sintaxis de corchetes como lo ha demostrado Alexey Romanov.
Las matrices en JavaScript generalmente se usan solo con claves numéricas, de incremento automático, pero los objetos de JavaScript pueden contener pares de valores de clave con nombre, funciones e incluso otros objetos también.
Matriz simple, por ejemplo.
$(document).ready(function(){
var countries = ['Canada','Us','France','Italy'];
console.log('I am from '+countries[0]);
$.each(countries, function(key, value) {
console.log(key, value);
});
});
Salida -
0 "Canadá"
1 "nosotros"
2 "Francia"
3 "Italia"
Vemos arriba que podemos hacer un bucle de una matriz numérica usando la función jQuery.each y acceder a la información fuera del bucle usando corchetes con teclas numéricas.
Objeto simple (json)
$(document).ready(function(){
var person = {
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
},
}
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);
$.each(person, function(key, value) {
console.log(key, value);
});
});
Salida -
Mi nombre es James y soy un programador de 6 pies 1
nombre James
programador de ocupaciones
Altura Objeto {pies: 6, pulgadas: 1}
En un lenguaje como php, esto se consideraría una matriz multidimensional con pares de valores clave, o una matriz dentro de una matriz. Supongo que porque preguntó acerca de cómo recorrer una matriz de valores clave, le gustaría saber cómo obtener un objeto (clave => matriz de valores) como el objeto de persona anterior para tener, digamos, más de una persona.
Bueno, ahora que sabemos que las matrices de JavaScript se usan típicamente para la indexación numérica y los objetos de manera más flexible para la indexación asociativa, los usaremos juntos para crear una matriz de objetos que podamos recorrer, como así:
Matriz JSON (matriz de objetos):
$(document).ready(function(){
var people = [
{
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
}
}, {
name: "Peter",
occupation: "designer",
height: {
feet: 4,
inches: 10
}
}, {
name: "Joshua",
occupation: "CEO",
height: {
feet: 5,
inches: 11
}
}
];
console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");
$.each(people, function(key, person) {
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
});
});
Salida -
Mi nombre es Joshua y soy un CEO de 5 pies 11
Mi nombre es James y soy un programador de 6 pies 1
Mi nombre es Peter y soy un diseñador de 4 pies 10
Mi nombre es Joshua y soy un CEO de 5 pies 11
Tenga en cuenta que fuera del bucle tengo que usar la sintaxis de corchetes con una clave numérica porque ahora es una matriz de objetos indexados numéricamente y, por supuesto, dentro del bucle está implícita la clave numérica.