Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fekz

Array bidimensional no JS

Recommended Posts

Queria saber como faço corretamente para criar um array bidimensional no JS.

Fiz o seguinte:

<script>
oi = new Array(5);

oi[0] = {1,2,3,4,5}
oi[1] = 2
oi[2] = 3
oi[3] = 4
oi[4] = 5

document.write(oi[0][0]);
document.write(oi[1]);
document.write(oi[2]);
document.write(oi[3]);
document.write(oi[4]);

</script>
Queria por exemplo que ao acessar o [0][0] aparecesse 1, o [0][1]0 aparecesse 2, como se fossem linhas e colunas.

 

No java eu faria simplesmente: int nomeDoArray = new Int[linhas][colunas]

 

Mas no js isso não funciona, alguém me ajuda? Valeu ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo:

 

var jogadores = new Array(
["TIME A",20],
["TIME B",25]
);

alert(jogadores.length);
alert(jogadores[0]);
alert(jogadores[0][0]);

ABRAX!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você não entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

var jogadores = new Array(
["TIME A",20],
["TIME B",25]
);

time A seria [0][0] 20 seria [0][1]

time b seria [1][0] 25 seria [1][1]?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo amigo, o que pode ter te deixado um pouco confuso é o seguinte:

 

O array tem 3 modos de se declarar

 

1º - criando um array com 5 posições

var meuArray = new Array(5);

2º - criando um array com 5 valores

var meuArray = new Array(0,1,2,3,4,5);

3º - do modo que o berkowitz criou, não precisando usar a palavra "new" e utilizando [] para passar os valores separados por virgula ",".

var meuArray = [1,2,3,4,5]

Ele está criando um array de "jogadores" (como no 2º exemplo que eu passei) que possui 2 arrays dentro, O array possui na posição 0 o time e na posição 1 o numero

 

var jogadores = new Array(
["TIME A",20],
["TIME B",25]
);

 

Portanto é assim mesmo como você descreveu que se recupera os valores.

time A seria [0][0] e 20 seria [0][1]

time b seria [1][0] e 25 seria [1][1]?

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi, perfeitamente.

Porém, isso quando eu quero fazer o array.

 

Se eu quiser percorre-lo usando uma linguagem com suporte a arrays melhor, eu faria.

 

for(i=0; i<array.length; i++){
for(c=0;c<array.length; c++){
array[i][j] = prompt("digite o valor");
}
}
Como faço isso, com essa sintaxe do JS?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende de como você quer percorrer.

 

Não tem mistério, é só você imaginar uma matriz onde você tem linhas e colunas.

 

Onde no i desse codigo q você colocou fosse a linha e o j as colunas.

 

Ficaria mais ou menos assim:

 

for(i=0; i<array.length; i++){
   for(j=0;j<array[i].length; j++){
		  alert(array[i][j]);
   }
}

você tem q usar o array com o indice do primeiro "for" para que você verifique quantos indices ele tem, é como se fosse assim na linha do "array" quantas colunas eu tenho ? é o papel do segundo for fazer isso saca ?

 

 

abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

var jogadores = new Array(
["TIME A",20],
["TIME B",25]
);
Cara, pra percorrer esse array eu entendi.

Faço do jeito normal, com 2 for's, como em qualquer linguagem. Isso não é o problema.

 

Quero criar linhas e colunas automaticamente.

Se fosse só vetores:

 

oi = new Array;
for(i=0; i<oi.length; i++){
oi[i] = promt("Digite um valor")
}

E assim ele criaria o vetor.

 

Agora qual será a sintaxe para usando isso, eu fazer a minha matriz dinâmica, com o usuário passando valores?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mals a demora para responder.

 

Para criar você teria q usar uma função chamada "push()", com ela você adiciona um elemento no final de um array, entaum cria parecido com o outro de leitura.

 

exemplo:

 

linhas = new Array();

for(i=0; i<addLinhas.length; i++){
  
  colunas = new Array();
   for(j=0;j<addColunas[i].length; j++){
		colunas.push(addColunas[i][j]);
   }
   linhas.push(colunas)
}

 

testa aeee e me fala.

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra escrever o array,use join().

Para percorrer o array,e o preencher/tona-lo bidimensional...use loops.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cuidado, depende da necessidade.

 

O Join ele é semelhante ao "implode" do php, ele serve para pegar uma array e transformar em uma string com um separador , o push ele adiciona um indice no final de um array.

 

Tem uma referência aqui ótima sobre funções de arrays em Js.

 

http://www.mspc.eng.br/info/jscriptArray.shtml

 

Absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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