JavaScript - Objeto Array
Cristiano Pires Martins
Fonte: JavaScript: Guia do Programador - Maujor
Fundamentos
• Array é um objeto destinado a armazenar uma coleção ordenada de dados
indexados sequencialmente a partir de zero;
• Para criar um array:
• var meuArray = new Array( );
• Para popular um array:
• var meuArray = new Array(“casa”, “rio”, 5, “Jales”, 125);
• Cada elemento tem seu índice, começando por zero;
Fundamentos
• Arrays podem conter dados do tipo objeto:
• var outroArray = new Array(“casa”, “rio”, {x: 14, y: “mar”});
• Para ler:
• outroArray[2].x; ou outroArray[2][“x”];
• outroArray[2].y; ou outroArray[2][“y”];
Fundamentos
• Outra forma é criar e popular depois:
var a = new Array;
a[0] = 3.14159;
a[1] = “prego”;
a[2] = true;
a[3] = {nome: “Cristiano”, cidade: “Jales”};
Para ler:
a[0] //Retorna 3.14159
a[3].cidade //Retorna Jales
Propriedades do Construtor
• Construtor: é uma referência à função que cria o objeto;
• Prototype: permite adicionar novas propriedades e/ou métodos a um objeto
existente;
• Length: retorna a quantidade de elementos de um array;
var arr = new Array(1, 2, 3, “a”, “b”, “c”, {nome: “Cristiano”, cidade: “Jales”});
var x = arr.length; //O valor de x é sete
Métodos do objeto Array
• Concat(arg1, arg2, ..., argn)
var arr = [1, 2, “a”, “b”];
var a = arr.concat(“m”, 32); //resulta em a = [1, 2, “a”, “b”, “m”, 32];
• every(função(elem, ind, obj) [,thisObjeto])
var arr = [21, 3, 18, 290];
function funcaoUm(elem, ind, obj){
return (typeof elem == “number”);
}
var x = arr.every(funcaoUm);
alert(x); //retorna true, todos os elementos são números
Até o Internet Explorer 8 não funciona esse método!
Mas existem funções que fazem funcionar.
Métodos do objeto Array
• filter (função(elem, ind, obj) [,thisObjeto])
var arr = [21, 3, 18, “a”, 290, “b”, 7]; var arr = [21, 3, 18, “a”, 290, “b”, 7];
function filtrarArray(elem, ind, obj){ function filtrarArray(elem, ind, obj){
return (elem >= 18); return (ind < 4);
} }
var x = arr.filter(filtrarArray); var x = arr.filter(filtrarArray);
alert(x); //retorna [21, 18, 290] alert(x); //retorna [21, 3, 18, “a”]
var arr = [21, 3, 18, “a”, 290, “b”, 7];
function filtrarArray(elem, ind, obj){
return (typeof elem == “string”);
}
var x = arr.filter(filtrarArray);
alert(x); //retorna [“a”,”b”]
Métodos do objeto Array
• forEach(função(elem, ind, obj) [,thisObjeto])
var arr = [21, 3, 18, “a”, 290, “b”, 7];
var msg = “”;
function funcaoUm(elem, ind, obj){
msg += “arr[“ + ind + “] = “ + elem + “\n”;
}
arr.forEach(funcaoUm);
alert(msg);
Métodos do objeto Array
• indexOf(elemento, [arg2, true ou false])
var arr = [1, 2, “a”, “b”, “2”, “c”, 1, “a”, “45”];
var a = arr.indexOf(“b”); //retorna 3
var b = arr.indexOf(“a”); //retorna 2
var c = arr.indexOf(23); //retorna -1
var d = arr.indexOf(2); //retorna 1
var e = arr.indexOf(45); //retorna -1
var arr = [1, 2, “a”, “b”, “2”, “c”, 1, “a”, “45”];
var a = arr.indexOf(1); //retorna 0 - índice do primeiro elemento 1 no array
var b = arr.indexOf(1,2); //retorna 6 - índice do primeiro elemento 1 no array
//começando a busca no terceiro elemento
var arr = [1, 2, “a”, “b”, “2”, “c”, 1, “a”, “45”];
var a = arr.indexOf(45); //retorna -1 - não existe o número 45 no array
Métodos do objeto Array
• lastIndexOf(elemento, [arg2, true ou false])
var arr = [1, 2, “a”, “b”, “2”, “c”, 1, “a”, “45”];
var a = arr.indexOf(“a”); //retorna 2
var b = arr.lastIndexOf(“a”); //retorna 7
• join([arg])
var arr = [1, 2, “a”, “b”];
var a = arr.join( ); //resulta na string a = “1,2,a,b”
var b = arr.join(“ - ”); //resulta na string a = “1 - 2 - a - b”
var c = arr.join(“*”); //resulta na string a = “1*2*a*b”
Métodos do objeto Array
• map(função(elem, ind, obj) [,thisObjeto])
var arr = [21, 3, 18, 290];
function funcaoUm(elem, ind, obj){
return (elem = elem*10);
}
var x = arr.map(funcaoUm);
alert(x); //retorna [210, 30, 180, 2900]
• pop( ): remove o último elemento de um array e retorna o valor que foi
removido;
var arr = [1, 2, “a”, “b”];
var a = arr.pop( ); //resulta em a = “b” e arr.length = 3
Métodos do objeto Array
• push(arg1, arg2, ..., argn): acrescenta os argumentos no final de um array e
retorna a nova quantidade de elementos no array;
var arr = [1, 2, “a”, “b”];
var a = arr.push(5, 6, 7, “m”); //resulta em a = 8
//arr = [1, 2, “a”, “b”, 5, 6, 7, “m”]
• reduce(função(v1, v2, ind, arr)[,vInicial]): reduz a um único resultado usando a
operação da função. No caso do exemplo 2, acrescenta 100 ao resultado
var arr = [1, 4, 7, 15]; var arr = [1, 4, 7, 15];
funcaoUm = function(v1,v2,ind,arr){ funcaoDois = function(v1,v2,ind,arr){
return v1+v2; return v1+v2;
} }
var x = arr.reduce(funcaoUm); var x = arr.reduce(funcaoDois,100);
alert(x); alert(x);
Métodos do objeto Array
• reduceRight(função(v1, v2, ind, arr)[,vInicial]): funciona de modo semelhante
ao reduce, com a diferença que a função percorre o array do último elemento
para o primeiro;
• reverse( ): inverte a ordem dos elementos de um array;
var arr = [1, 2, “a”, “b”];
arr.reverse( ); //resulta arr = [“b”, “a”, 2, 1]
alert(arr);
• shift( ): remove o primeiro elemento de um array e retorna o valor que foi
removido;
var arr = [1, 2, “a”, “b”];
var a = arr.shift( ); //resulta em a = 1 e arr.length = 3
Métodos do objeto Array
• slice(arg1 [,arg2]): retorna um subarray do array. Admite um ou dois
argumentos que definem o índice inicial e o final do subarray a extrair:
• Diretrizes:
• Extrai o subarray desde o elemento definido no arg1, mas não inclui
o arg2;
• Se não definir o arg2, extrai desde o arg1 e vai até o final;
• Argumentos negativos revertem o início de contagem do índice para
o último elemento.
var arr = [1, 2, 3, 4, “a”, “b”, “c”];
var a = arr.slice(2, 5); //resulta em a = [3, 4, “a”]
var a = arr.slice(3); //resulta em a = [4, “a”, “b”, “c”]
var a = arr.slice(-5, 6); //resulta em a = [3, 4, “a”, ”b”]
var a = arr.slice(-6, -4); //resulta em a = [2, 3]
Métodos do objeto Array
• some (função(elem, ind, obj) [,thisObjeto])
var arr = [21, 3, 18, “a”, 290];
function funcaoUm(elem, ind, obj){
return (typeof elem == “string”);
}
var x = arr.some(funcaoUm);
alert(x); //retorna true, pois existe pelo menos 1 elemento string no array
var arr = [21, 3, 18, 290];
function funcaoDois(elem, ind, obj){
return (typeof elem == “string”);
}
var x = arr.some(funcaoDois);
alert(x); //retorna false, pois não existe 1 elemento string no array
Métodos do objeto Array
Os métodos listados a seguir foram implementados na versão JavaScript 1.8 da linguagem e estão previstos na
especificação ECMA-262. Esses métodos ainda não estão implementados em todos os navegadores modernos.
• sort([funcao]): destina a ordenar os elementos de um array. Havendo
número, serão transformados em strings para determinar a ordem,
resultado em ordenação não numérica;
var arr = [“maçã”, “laranja”, “limão”, “abacate”, “banana”];
arr.sort( );
var arrUm = [2, 128, 34, 111];
arrUm.sort( );
alert(arr);
alert(arrUm);
var arr = [2, 128, -32, 47, 34, 111, -67];
arr.sort(function(a,b){ para ordenar decrescente, basta fazer
no corpo da função: return b - a;
return a-b;
}); //resulta em arr = [-67, -32, 2, 34, 47, 111, 128]
Matriz em Javascript
function createMatrix(x,y){
mt = new Array();
for(i=0; i<x; i++){
mt[i] = new Array();
for(j=0; j<y; j++){
mt[i][j] = -1;
}
}
return mt;
}
my_matrix = createMatrix(10,10);
my_matrix[2][3] = 'Olá';
alert(my_matrix[2][3]);
Fonte: Portifólio de Rafael Sant’Ana
rafaelsantana.blog.com