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

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

13 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

2 dias atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

3 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

4 dias atrás