Tipos de dados - Objetos
Objetos, assim como arrays, também são listas de elementos. A diferença é que os objetos são compostos por pares de chaves (keys) e valores (values). Utilizamos os dois pontos (:) para separar a chave do seu valor associado.
O símbolo que identifica os objetos são as chaves { }.
var funcionario = {
'nome': 'Pedro Souza Gomes',
'ano_nasc': 1972,
'cpf': '111.111.111.11',
'cargo': 'Analista de Sistemas'
};
As chaves do objeto são também chamadas de propriedades do objeto.
Os elementos do objeto não são ordenados por índice e só podem ser acessados por meio da chave:
console.log( funcionario['cpf'] ); // O console mostrará '111.111.111.11'
console.log( funcionario.cpf ); // Podemos usar a notação com ponto (dot notation)
A notação com pontos só funciona com chaves que sigam as regras dos identificadores:
var teste = {
'chave1': 'Algum valor',
'2a': 'Algum valor 2',
09335: 'Algum valor 3'
'ola-mundo': 'Algum valor 4'
};
// a 'chave1' pode ser acessada usando a notação com ponto.
console.log( teste.chave1 ); // O console mostrará 'Algum valor'
// a outras chaves não podem usar esta notação porque não respeitam as regras dos identificadores.
Podemos também alterar valores das propriedades e adicionar novas propriedades para os objetos.
var funcionario = {
'nome': 'Pedro Souza Gomes',
'ano_nasc': 1972,
'cpf': '111.111.111.11',
'cargo': 'Analista de Sistemas'
};
funcionario.cargo = 'Gerente de T.I.'; // alterar um valor associado a uma chave existente
funcionario.cnh = '1982736654'; // adicionar uma nova dupla de chave e valor
console.log(funcionario);
/* O console mostrará:
{
'nome': 'Pedro Souza Gomes',
'ano_nasc': 1972,
'cpf': '111.111.111.11',
'cargo': 'Analista de Sistemas',
'cnh': '1982736654'
}; */
A partir de agora vamos começar a ver arrays e objetos multidimensionais misturados, portanto é preciso ter cuidado com a indentação para que a visualização seja fácil.
var cursos = [
{
'titulo': 'Aprenda programação em Python 3 com facilidade do zero',
'avaliacoes': 680,
'alunos': 2300,
'categorias': ['programacao', 'tecnologia']
},
{
'titulo': 'Aprenda PHP e faça sites dinâmicos',
'avaliacoes': 180,
'alunos': 350,
'categorias': ['desenvolvimento web', 'programacao']
},
{
'titulo': 'Excel do Zero ao Avançado',
'avaliacoes': 420,
'alunos': 1800,
'categorias': ['produtividade', 'gestão']
}
];
Para rapidamente mapearmos arrays e objetos multidimensionais, além da correta indentação, temos que lembrar das regras principais:
- Arrays são identificados por colchetes [ ]
- Arrays são listas de valores separados por vírgula
- Objetos são identificados por chaves { }
- Cada elemento do objeto é uma dupla de chave (key) : valor (value). A chave também é chamada de propriedade.
- As duplas do objeto são separadas por vírgula
Sabendo destas regras, podemos concluir algumas coisas sobre a variável cursos:
- A variável cursos é um array que possui 3 elementos (atenção, pois objetos não tem a propriedade length)
- Os elementos deste array são objetos
- Cada um destes objetos é composto por 4 elementos
- Em cada objeto, temos diferentes tipos de dados associados a cada chave. Neste exemplo temos strings ('titulo'), números ('avaliacoes' e 'alunos') e arrays ('categorias')
Como é que nós podemos acessar então, a categoria 'desenvolvimento web' do curso de PHP, por exemplo?
console.log( cursos[1]['categorias'][0] );
Podemos desta mesma maneira alterar os elementos.
cursos[2]['categorias'][1] = 'Administração de empresas';
console.log( cursos[2]['categorias'] ); // O console mostrará ['produtividade', 'Administração de empresas']
// Podemos usar também a notação com ponto:
cursos[2].categorias[1] = 'Administração de empresas';
console.log( cursos[2].categorias);