Ir para conteúdo
Rafael Soares de Almeida

Usando Matriz(Array) no JavaScript

Recommended Posts

Caros mestres do Java Script, estou tentando aprender como funcionar Matriz(Array) no JavaScript. Gostaria de inserir o nome do funcionário na linha e o cargo do funcionário na coluna, e imprimir na seguinte ordem Nome do funcionário e depois cargo do funcionário. No arquivo .js, tenho o seguinte código:

var funcionarios = [][], indiceLinha, indiceColuna;

No arquivo index.html, tenho o seguinte código:

<!DOCTYPE html>

<html lang="pt-BR">
<head>
    <meta charset="utf-8" />
    <title>Aprendendo Algoritmos com JavaScript</title>
</head>
<body>
    <script src="scripts/aplicativo_021.js"></script>    
    <script>        
        for (indiceLinha = 0; indiceLinha < 2; indiceLinha++)
        {
            funcionarios[indiceLinha] = (prompt("Digite o Nome do Funcionário:"));
            for (indiceColuna = 0; indiceColuna < 2; indiceColuna++)
            {                    
                funcionarios[indiceColuna] = (prompt("Digite o Cargo do Funcionário:"));
                funcionarios[indiceLinha] = (prompt("Digite o Nome do Funcionário:"));
            }
        }        
            
        for (indiceLinha = 0; indiceLinha < 2; indiceLinha++)        
        {
            for (indiceColuna = 0; indiceColuna < 2; indiceColuna++)
            {            
                document.write("Nome do Funcionário " + funcionarios[indiceLinha] + "\n");
                document.write("<br>");
                document.write("Cargo do Funcionário " + funcionarios[indiceColuna] + "\n");
                document.write("<br>");
            }
        }
    </script>
</body>
</html>

Onde estou errando? Já tentei de várias formas e não consegui. Quem puder ajudar, agradeço muito de antemão.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tal a gente começar da modelagem final de sua matriz/array? Imagino que você deseje criar uma lista de funcionários aglo como...

var funcionario1 = ['Alexandre Garcia', 'copeiro'];
var funcionario2 = ['Maria Antonieta', 'desenvolvedora'];
var funcionario3 = ['Sergio Soares', 'atendente'];

E para facilitar sua vida, você deseja colocar tudo em uma variável só, uma matriz contendo os outros elementos...

var funcionarios = [funcionario1, funcionario2, funcionario3];

Somente para elucidar, vamos colocar tudo junto num trecho de código só...

var funcionarios = [
  ['Alex', 'desenvolvedor'],
  ['Tania', 'estilista'],
  ['Rosa', 'designer']
];

Bom, acho que é essa a estrutura final que você deseja...

 

Pelo que entendi do seu código você quer utilizar o comando prompt para perguntar, no navegador, quais são os valores que serão adicionados na matriz... então poderiamos escrever a primeira parte como....

var nome = prompt('Digite o nome do funcionario');
var cargo = prompt('Digite o cargo do funcionario');

var funcionario = [nome, cargo];

Tendo essa parte resolvida, podemos aproveitar um laço para adicionar este funcionário ao nosso quadro de funcionários...

var indice = 0;
var total = 2;

while (indice < total) {
  // aqui faremos nossa iteração...
  indice++;
}

Fiz o loop/laço mais simples possível para que seja fácil de entender o que está acontecendo... o while irá executar o laço enquanto o indice for menor que o total de funcionario que desejamos adicionar e ao final do laço incrementamos o valor do íncide, o que irá fazer com que a validação do while quebre em algum momento, fazendo com que o processo siga em frente. Este mesmo while pode ser escrito com o for como você mesmo já demonstrou na pergunta...

for (var indice = 0, total = 2; indice < total; indice++) {
  // é aqui que a mágica vai acontecer...
}

Bom, agora, temos os dois códigos prontos para serem unidos e termos a população do nosso repositório de funcionários. É importante prestar atenção que o var cria/instancia/define duas variáveis (indice e total) separando as mesmas por vírgulas, a segunda instrução acontece depois do ponto-e-vírgula onde é feita a checagem do laço while e por último o incremento do índice.

var funcionarios = [];

for (var indice = 0, total = 2; indice < total; indice++) {
  var nome = prompt('Digite o nome do funcionario');
  var cargo = prompt('Digite o cargo do funcionario');
  
  funcionarios[indice] = [nome, cargo];
}

// resultado: funcionarios == [['mike', 'developer'], ['diana', 'gerente']]

E com isso a matriz estará montada conforme desejado. Vamos desconstruí-la?

 

array é um objeto que possui alguns atributos que nos permite percorrermos facilmente pelos seus itens. Um deles é o length, que no meu inglês aprendido nas ruas significa comprimento ou tamanho ou quantidade de itens que tem dentro dessa bagaça... rsss...

 

Bom, com ele podemos refazer o laço dos funcionários...

 

for (var indiceFuncionarios = 0, totalFuncionarios = funcionarios.length; indiceFuncionarios < totalFuncionarios; indiceFuncionarios++) {
  var funcionario = funcionarios[indiceFuncionarios];
}

Sendo assim, podemos fazer outro for, sabendo que o funcionário é outro array e, portanto, podemos percurre-lo da mesma maneira, segue o código...

 

for (var indiceFuncionarios = 0, totalFuncionarios = funcionarios.length; indiceFuncionarios < totalFuncionarios; indiceFuncionarios++) {
  var funcionario = funcionarios[indiceFuncionarios];
  
  for (var indiceCaracteristicas = 0, totalCaracteristicas = funcionario.length; indiceCaracteristicas < totalCaractereisticas; indiceCaracteristicas++) {
    var caracteristica = funcionario[0];
    document.write('Valor da caracteristica: ' + caractetistica + '<br />');
  }
}

Perceba que nosso código não distingue qual é a caracteristica, afinal de conta são indices de uma lista/matriz/array e portanto não existe uma definição, mas acho que para fins de estudo você pode tem o que deseja que é o loop sobre outro loop.

 

Mas vamos dar mais um passo e colocar essas caracteristícas assim como você queria no seu código...

 

for (var indiceFuncionarios = 0, totalFuncionarios = funcionarios.length; indiceFuncionarios < totalFuncionarios; indiceFuncionarios++) {
  var funcionario = funcionarios[indiceFuncionarios];
  
  document.write('Nome do funcionario: ' + funcionario[0] + '<br>');
  document.write('Cargo do funcionario: ' + funcionario[1] + '<br>');
}

O código acima funciona apenas porque sabemos que no índice zero do funcionário está o nome e que no índice um está o cargo.

 

Espero ter ajudado, qualquer coisa... grita :-) .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Rafael da Silveira
      Bom dia, tudo bem?
      Quem puder me ajudar com um problema...
      Tenho o seguinte array...
      [ 'Entradas':[ 'Receitas Operacionais':[ 0:'Vendas', 1:'Serviços' ], 'Receitas financeiras':[ 0:'Rendimentos' ] ], 'Saidas':[ 'Despesas comerciais':[ 0:'Comissões', 1:'Combustivel', 2:'Publicidade' ], 'Despesas operacionais':[ 0:'Matéria Prima', 1:'Fretes', ] ] ] Como posso percorrer seus filhos, visto que as primeiras camadas não tem index...
      A ideia é criar em HTML um menu arvore de acordo com essas informações...

      A segunda e terceira camada, podem ser editadas pelo usuário, então precisa ser dinâmico...
    • Por Luiz Henrique
      Olá pessoas,
       
      Como faço para criar um array multidimensional?
      É uma busca e os dados recebo de um arquivo json armazeno em um array usando um foreach e o strpos para verificar se a busca existe, então fiz isso:
       
       
      //$data é o arquivo json $array = array(); foreach($data as $key => $value){  if(strpos(...)){ $array['id'][] = $value->id; $array['nome'][] = $value->nome; $array['valor'][] = $value->valor; } }  Porém isso me retorna 
       
      id' => array (size=3) 0 => int 1 1 => int 2 2 => int 3 'nome' => array (size=3) 0 => string 'teste1' 1 => string 'teste2' 2 => string 'teste3' 'valor' => array (size=3) 0 => float 28 1 => float 30 2 => float 35  Mas preciso dele neste formato
        
      array (size=3) 0 => public 'id' => int 1 public 'nome' => string 'teste1' public 'valor' => float 28 1 => public 'id' => int 2 public 'nome' => string 'teste2' public 'valor' => float 30 2 => public 'id' => int 3 public 'nome' => string 'teste3' public 'valor' => float 35 E não consigo fazer de forma alguma !
       
       
    • Por themillenal
      OOOOOE GENTE. Eu comecei a programa faz pouco tempo, e infelizmente tenho um péssimo professor que não sabe explicar bem, só grita. Ele pediu para fazermos um array multidimensional ( matriz) usando o print_r, só que sempre que eu tento usar o print_r acabo errando e não sei exatamente onde. Se alguém puder me explicar como montar um array multidimensional usando o print_r, seria ótimo.
       
      Eu fiz isso ate agora, mas não sei como continuar ou como usar o print_r
       
      <?php
          
          $Matriz = array(array(10,11,12),
                          array(13,14,15),
                          array(16,17,18));
       
         
          echo $Matriz[0][2];
       
      ?>
    • Por Eduardo Villa
      Salve galera,
       
      Depois de quase dois anos estou de volta e com um dúvida...
      Tenho um array com 38 posições, mas só vou postar a primeira para não fica muito extenso o post.
      array(38) { [836]=> array(13) { [13]=> int(732) [12]=> array(1) { [1360]=> int(208) } [11]=> array(1) { [2372]=> int(32) } [10]=> array(1) { [2372]=> array(1) { [841]=> int(27) } } [9]=> array(1) { [4009]=> int(67) } [8]=> array(1) { [4903]=> int(9) } [7]=> array(1) { [5747]=> int(1) } [6]=> array(1) { [6199]=> int(385) } [5]=> array(1) { [6966]=> int(454) } [4]=> array(1) { [7728]=> int(528) } [3]=> array(1) { [7728]=> array(1) { [1360]=> int(4) } } [2]=> array(1) { [7728]=> array(1) { [1598]=> int(602) } } [1]=> array(1) { [7728]=> array(1) { [2372]=> int(664) } } }  
      Preciso percorrer ele todo e encontrar o menor valor, mas mantendo a sua estrutura... Loucura né kkkk, pois calma, vou explicar melhor:
       - Para encontrar o menor valor utilizei o código abaixo
      array_walk_recursive($array,function($v) use(&$a){ $a[] = $v; }); return min($a);  
       - E depois de descobrir o menor valor é 1, preciso recuperar a sua estrutura:
       
      [836]=> array(13) { [7]=> array(1) { [5747]=> int(1)  
      Alguém pode me ajudar???
    • Por Vanderlan
      Boa Noite Pessoal,
       
      Eu tenho um banco com algumas informações (ver exemplo abaixo) e estou realizando a consulta abaixo:
       
      $sql = mysqli_query ($cx,"SELECT * FROM dados WHERE AREA = 'ALAGOINHAS'") or die (
      mysqli_error($cx)
      );
       
       
      while($aux = mysqli_fetch_assoc($sql ))
      {
       
      $teste = aux["INDICADOR"];

      }
       
      echo $teste;
       
       
      Da maneira como esta estruturado eu só consigo imprimir os dados da primeira linha. 
       
       
      Gostaria de saber como faço pra imprimir os dados de cada linha de forma separada. Por Exemplo o ACUM_DADOS_2  de MARÇO do ICO (IMPRIME 15) ou o ACUM_PERCENTUAL de ABRIL do ILP (IMPRIME 67).
       
      Lembrando que essa tabela tem mais de 4 miil registros.
       
       
      ID INDICADOR REF_MES AREA TIPO_AREA ACUM_DADOS_1 ACUM_DADOS_2 ACUM_PERCENTUAL 1 ILF JANEIRO ALAGOINHAS UTD 1 3 3 2 ILF FEVEREIRO ALAGOINHAS UTD 5 0 1 3 ILF MARÇO ALAGOINHAS UTD 2 2 2 4 ILF ABRIL ALAGOINHAS UTD 5 6 8 5 ICO JANEIRO ALAGOINHAS UTD 14 3 1 6 ICO FEVEREIRO ALAGOINHAS UTD 27 13 10 7 ICO MARÇO ALAGOINHAS UTD 14 15 25 8 ICO ABRIL ALAGOINHAS UTD 9 24 16 9 ILP JANEIRO ALAGOINHAS UTD 99 91 36 10 ILP FEVEREIRO ALAGOINHAS UTD 64 58 28 11 ILP MARÇO ALAGOINHAS UTD 96 35 27 12 ILP ABRIL ALAGOINHAS UTD 67 13 67  
       
       
       
       
       
       
       
       
       
                                                                                                                                                                                                                     
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.