Ir para conteúdo

Arquivado

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

wxkj

[Resolvido] Matriz em JavaScript

Recommended Posts

Os mais experientes já devem saber que o Javascript não dá suporte a matrizes. Para quem não sabe, matriz é um vetor de um vetor

 

Por exemplo:

um vetor:

vetor[0] = "valor";uma matriz seria:vetor[0][0] = "valor";

Mas infelizmente o Javascript não tem suporte. Eu estava precisando disso e encontrei exemplos que simulam matrizes e pensei que seria legal compartilhar aqui no forum.

 

 

<script language=javascript>function matriz_grupos(cod,nome){  this.cod=cod;  this.nome=nome;}grupos = new Array(); // cria vetor grupos[]i = 0;cod = "1";nome = "Animais";grupos[i] = new matriz_grupos(cod,nome);i++;cod = "2";nome = "Automóveis";grupos[i] = new matriz_grupos(cod,nome);i++;// Para exibir basta fazer uma referência:limite = grupos.length;for(i=0;i<limite;i++){ document.write("Código: "+grupos[i].cod+"<br>"); document.write("Grupo: "+grupos[i].nome+"<br>"); if((i+1)<limite)document.write("<p>");}</script>

 

 

Bom proveito! B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tornando a função mais dinâmica. Utilizei "caller.arguments" por isso consegui desenvolvê-la.

 

 

 

<script language=javascript>

function matriz(){return new matriz2();}function matriz2(){args = matriz2.caller.arguments; l = args.length; m = parseInt(l/2); p = new Array(); v = new Array();for(i=0;i<l;i++){if(i<m){p=args;}else{j=(i-m);v[j] = args;}}for(i=0;i<m;i++){this[p] = v;}}

 

vetor = new Array();

k = 0; vetor[k] = matriz("Nome","Idade","Profissão","Fulano Beltrano","15","Físico Nuclear (heheh)"); // * A

 

document.write("Nome: "+vetor[k].Nome+"<br>");

document.write("Idade: "+vetor[k].Idade+"<br>");

document.write("Profissão: "+vetor[k].Profissão+"<br>");

 

</script>

 

 

*A)

k = 0; vetor[k] = matriz("Nome","Idade","Profissão","Fulano Beltrano","15","Físico Nuclear (heheh)");

 

 

VERDE: parâmetros

VERMELHO: valores dos parâmetros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como chamam isso em javascript, mas ,pelo menos em c, isso não é uma matriz, é uma "struct".

Isso não é necessário, pois matrizes são apenas abstrações de vetores(arrays).

Ex:

var matriz=new Matriz();//se existiasse tal objeto.
var i, j;
for(i=0; i<=20; i++)
{
    for(i=0; i<=20; i++)
    {
        matriz[i][j]=i*j;
    }
}
document.write(matriz[10][10]);//imprime 100
o mesmo pode ser obtido com:

var matriz=new Array();
var i, j;
for(i=0; i<=20; i++)
{
    for(i=0; i<=20; i++)
    {
        matriz[i*20+j]=i*j;
    }
}
document.write(matriz[10*20+10]);//imprime 100
O segundo exemplo é bem possível.

Na verdade, toda matriz q se cria, não passa de um array de tamanho igual ao produto de todas as suas dimensões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá...

 

Sei que a intenção de vocês é ajudar, mas olhem a data do tópico http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

É de 2004...

 

Tente não 'ressucitar' tópicos antigos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá...

 

Sei que a intenção de vocês é ajudar, mas olhem a data do tópico http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

É de 2004...

 

Tente não 'ressucitar' tópicos antigos...

 

Desculpe, tava procurando sintaxe de matrizes n para javaScript na internet e encontrei o tópico. Vi q podia contribuir com alguma coisa e respondi. Nem tinha prestado atenção na data.

A proposito, o codigo acima é possível? Funcionaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

De todo modo, seria mais fácil assim:

matriz = [ [ 1, 2 , 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];

Compartilhar este post


Link para o post
Compartilhar em outros sites

EuMesmo2, a resposta para a sua pergunta é sim. Você pode (e deve) utilizar essa lógica para fazer arrays bidimensionais em javascript. Uma matriz nada mais é do que um array de um array, então se você fizer, por exemplo:

var matriz = new Array(new Array(5),

new Array(5),

new Array(5));

 

isso vai significar que vc tem uma matriz de 3 linhas x 5 colunas! Legal né?

Dá uma olhada num exemplo completo abaixo:

<script language="JavaScript">
	/*
	79. Criar um vetor de 10 elementos e uma matriz de 10 linhas por 10 colunas
	– solicitar para o usuário digitar valores no intervalo de 1 a 10 e inserir no vetor,
	– após a inserção no vetor, ler o vetor e para cada elemento lido calcular a tabuada e inserir na matriz.
	– Ao final mostrar o elemento do vetor e a tabuada correspondente que esta na matriz
        */
	var vetValores = new Array(10), strApresenta = "";
	var matValores = new Array(new Array(10), new Array(10), new Array(10), new Array(10), new Array(10), new Array(10), new Array(10), new Array(10), new Array(10), new Array(10));
	for (var i = 0; i < 10; i++){
		vetValores[i] = parseInt(prompt("Informe o " + (i + 1) + "º valor para o vetor: "));
	}
	for (var i = 0; i < 10; i++){
		for (var j = 0; j < 10; j++){
			matValores[i][j] = vetValores[i] * (j + 1);
		}				
	}
	for (var i = 0; i < 10; i++){
		for (var j = 0; j < 10; j++){
			strApresenta = strApresenta + vetValores[i] + " X " + (j + 1) + " = " + matValores[i][j] + "\n";
		}
		strApresenta = strApresenta + "\n\n";
	}
	alert("Tabuadas dos números informados:\n" + strApresenta);
</script>

Espero ter ajudado mais jovens gafanhotos por aí...

 

Abçs!

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.