Em javascript, uma matriz de valores-chave é armazenada como um objeto. Existem coisas como matrizes em javascript, mas elas também são consideradas objetos ainda, verifique esta resposta: Por que posso adicionar propriedades nomeadas a uma matriz como se fosse um objeto?
As matrizes são normalmente vistas usando a sintaxe entre colchetes e os objetos (matrizes "key => value") usando a sintaxe entre colchetes, embora você possa acessar e definir propriedades do objeto usando a sintaxe entre colchetes, como Alexey Romanov mostrou.
Matrizes em javascript normalmente são usadas apenas com chaves numéricas, incrementadas automaticamente, mas os objetos javascript podem conter pares de valores de chave nomeados, funções e até outros objetos também.
Matriz simples, por exemplo.
$(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);
});
});
Resultado -
0 "Canadá"
1 "nós"
2 "França"
3 "Itália"
Vimos acima que podemos fazer um loop em um array numérico usando a função jQuery.each e acessar informações fora do loop usando colchetes com teclas numéricas.
Objeto simples (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);
});
});
Resultado -
Meu nome é James e eu sou um programador de 6 pés 1
nome James
programador de ocupação
altura Objeto {pés: 6, polegadas: 1}
Em uma linguagem como php, isso seria considerado um array multidimensional com pares de valores-chave ou um array dentro de um array. Suponho que, porque você perguntou sobre como percorrer uma matriz de valor-chave, você gostaria de saber como obter um objeto (chave => matriz de valor) como o objeto de pessoa acima para, digamos, mais de uma pessoa.
Bem, agora que sabemos que matrizes javascript são usadas normalmente para indexação numérica e objetos de forma mais flexível para indexação associativa, usá-los-emos juntos para criar uma matriz de objetos pelos quais podemos percorrer, assim:
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");
});
});
Resultado -
Meu nome é Joshua e sou um CEO de 5 pés 11
Meu nome é James e eu sou um programador de 6 pés 1
Meu nome é Peter e sou designer de 4 ft 10
Meu nome é Joshua e sou um CEO de 5 pés 11
Observe que fora do loop eu tenho que usar a sintaxe de colchete com uma tecla numérica, porque agora é uma matriz de objetos indexada numericamente e, é claro, dentro do loop, a chave numérica está implícita.