Javascript

Array associativo no Javascript, como funciona e suas limitações

Como criar um Array associativo pelo Javascript.

Em diversas linguagens de programação é possível utilizar uma string, nome, invés do índice número no Array.

Não é o caso do Javascript.

Infelizmente o javascript não suporte nomes nos índices dos arrays (elemento do tipo Array).

Porém isso não impede que você os utilize mesmo assim.

var cachorro = [];

cachorro ["nome"] = "bolinha";
cachorro ["raca"] = "pitbul";
cachorro ["idade"] = 4;

O que irá acontecer é que o Array será convertido para um Objeto padrão.

Não será mais possível a utilização de alguns métodos e propriedades que são utilizados no Array.

console.log( cachorro.length );

// irá retornar zero

Não será mais possível acessar também os elementos utilizando os índices numéricos.

console.log( cachorro[0] );

// irá retornar indefinido

Trabalhando com Object

Exemplo de uma objeto com vários atributos.

var pessoa = {nome:"Roger", sobrenome:"Takemiya", idade:26, corOlhos:"castanho"};

Para acessar o valor dos atributos utilize:

console.log( pessoa.nome );

// output: Roger

Para percorrer um array de objetos utilize:

var data = { "messages": [{"msgFrom": "13223821242","msgBody": "Hi there"}, {"msgFrom": "Bill","msgBody": "Hello!"}] };

for (var key in data.messages) {

    var obj = data.messages[key];
    
    console.log( obj.msgFrom );
}

Array ou Objeto?

Sempre utilizamos o typeof para descobrir o tipo de uma variável no Javascript, porém no caso do Array, sempre será retornado o valor “object”.

var frutas = ["laranja", "pera", "uva", "morango"];

typeof frutas ;  // object

Então como descobrir se uma variável é um array ou objeto? Utilizando Array.isArray.

var cachorro = [];

cachorro['nome'] = "bolinha";

console.log( Array.isArray(cachorro) ); 

// irá retornar false

A solução acima só irá funcionar em navegadores modernos, como solução alternativa podemos criar a nossa própria função, segue o exemplo:

function isArray(array) {
    return array.constructor.toString().indexOf("Array") > -1;
}

var array_temp = [];

array_temp[0] = 1;

console.log( isArray(array_temp) );

 

 

Ver comentários

Post Recentes

Bloquear .env e .git no nginx: as regras que ainda deixam o arquivo vazar

Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…

13 horas atrás

Canonical errado no Yoast: corrigindo pelo filtro wpseo_canonical

O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…

17 horas atrás

Layout XML do Magento 2: remover bloco de módulo de terceiro

Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…

1 dia atrás

Restaurar dump do Magento 2 em outro servidor: trocar a base_url no SQL

Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…

2 dias atrás

Criar exceção customizada em PHP: quando estender Exception compensa

Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…

3 dias atrás

DataProvider Magento 2: form do admin abre com campos vazios ao editar

O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…

4 dias atrás