Aprenda Javascript

  • Página Inicial
  • Contato!
  • Tudo sobre Javascript Parte 1!
  • Tudo sobre Javascript Parte 2!
  • Tudo sobre Javascript Parte 3!
  • Tudo sobre Javascript Parte 4!
  • Tudo sobre Javascript Parte 5!
  • Tudo sobre Javascript Parte 6!
  • Tudo sobre Javascript Parte 7!
  • Tudo sobre Javascript Parte 8!
  • Tudo sobre Javascript Parte 4

    Arrays - Declaração e Atribuição

    Usamos arrays em Javascript para armazenar vários valores em uma única variável. No caso do Javascript, podemos armazenar valores de tipos diferentes. Com os arrays poupamos o esforço de criar uma variável para cada item a ser armazenado numa lista.

    Cada item de dados armazenado em array é chamado de elemento. Cada elemento possuí um valor de índice, o que permite distinguir cada elemento dentro da estrutura. O Javascript não suporta arrays associados.

    Para criar variáveis em array, também se pode usar o nome dela seguido de um underline e a palavra array (tipo teste_array), e os itens ficam entre colchetes, separados por vírgulas. Veja um exemplo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    

    Para criar um array como objeto, você coloca new Array logo após a atribuição, e nesse caso não se usa colchetes, e sim parênteses. Para testar se um elemento é array, você usa o método Array.isArray, entre parênteses, ele deverá retornar true ou false. Veja um exemplo:

    
    var cordas = new Array("Violão", "Guitarra", "Cavaquinho", "Bandolim");
    
    document.write(Array.isArray(cordas) + "<br/>");
    
    

    PS: Em qualquer situação, todo array é um objeto.

    Para ler os elementos em array, se usa o número de índice do elemento (lembrando que ele começa do 0), veja mais um exemplo:

    
    var instrumento = cordas[0];
    
    document.write("O instrumento é " + instrumento);
    
    

    Podemos também ler todo o conteúdo de um array efetuando um loop em seus elementos, assim:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    for(let i = 0; i < 3; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    E no caso dos vetores, podemos simplificar com um for it, assim:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    for(let c of cordas) { // For com iterator
        document.write(c + "<br/>");
    }
    
    

    Ou até mesmo com uma Lambda:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    cordas.forEach(c => document.write(c + "<br/>"));
    
    

    Para escrever em um array, podemos inserir o valor nele simplesmente atribuindo um valor a uma de suas posições (caso ela já tenha um valor, será substituída pelo novo valor).

    
    var cordas = ["Violão" ,"Guitarra", "Cavaquinho"];
    
    for(let i = 0; i < 3; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    cordas[2] = "Contrabaixo";
    
    document.write("O instrumento é " + cordas[2] + "<br/>");
    
    for(let i = 0; i < 3; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    PS: O conteúdo de um mesmo array nem sempre precisa ser tudo do mesmo tipo. pode ser misto, como por exemplo:

    
    var dados = ["Exemplo de string", 25, false];
    
    for(let i = 0; i < 3; i++) {
        document.write(dados[i] + "<br/>");
    }
    
    

    Arrays - Propriedades e Métodos

    Os arrays em Javascript possuem vários métodos e propriedades disponíveis, já que ele é um objeto.

    Veja um exemplo usando a propriedade length, que retorna o número de elementos presentes no array:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    var quantCordas = cordas.length;
    
    document.write("O array possuí " + quantCordas + " elementos.<br/>");
    
    

    Podemos facilmente adicionar mais elementos a um array com o método push(), veja um exemplo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    cordas.push("Banjo");
    cordas.push("Viola");
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    E também podemos remover os últimos elementos do array com o método pop(), veja um exemplo, onde reduz e mostra o último elemento:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    cordas.push("Banjo");
    cordas.push("Viola");
    
    document.write(cordas[cordas.length - 1] + "<br/>");
    
    cordas.pop();
    
    document.write(cordas[cordas.length - 1] + "<br/>");
    
    

    O método join() permite unir todos os elementos de um array em uma string, especificando um caractere separador entre eles:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    cordas.push("Banjo");
    cordas.push("Viola");
    
    var conjuntoCordas = cordas.join(", ");
    
    document.write(conjuntoCordas);
    
    

    Podemos também remover o primeiro elemento do array e deslocar os demais para "baixo" com o método shift(), veja um exemplo:

    
    var cordas = ["Violão" ,"Guitarra", "Cavaquinho"];
    
    cordas.push("Banjo");
    cordas.push("Viola");
    cordas.push("Ukulele");
    
    document.write("Antes do deslocamento: <br/>");
    document.write("Tamanho: " + cordas.length + "<br/>");
    document.write("1º elemento: " + cordas[0] + "<br/><br/>");
    
    cordas.shift();
    
    document.write("Após o deslocamento: <br/>");
    document.write("Tamanho: " + cordas.length + "<br/>");
    document.write("1º elemento: " + cordas[0] + "<br/><br/>");
    
    

    E também podemos excluir um elemento em qualquer posição do array usando o operador delete. A posição do elemento excluído ficará com o valor undefined, veja um exemplo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    delete cordas[2];
    
    document.write("<br/>Após excluir o elemento:<br/><br/>");
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Para adicionar elemento em uma posição específica do array, usamos o método splice(). Com esse método. um novo elemento é adicionado ao array, sem alterar os elementos já existentes.

    O argumento pos indica a posição dos elementos que serão adicionados, o elem-remov indica se e quantos elementos serão removidos e elemento1, elemento2, etc. são os valores a serem inseridos a partir (O primeiro número indica a posição à partir do qual serão inseridos e o segundo, se removerá algum elemento):

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    cordas.splice(1, 0, "Cítara", "Craviola");
    
    document.write("<br/>Após adicionar os elementos:<br/><br/>");
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Também podemos usar esse método para remover elementos, sem deixar posições com valores indefinidos, alterando o segundo número, veja o código abaixo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    cordas.splice(1, 2, "Cítara", "Craviola");
    
    document.write("<br/>Após substituir os elementos:<br/><br/>");
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Podemos usar também o includes() para verificar se um elemento existe num array, e o indexOf() para indicar a posição dele, assim:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho", "Ukulele"];
    
    if(cordas.includes("Ukulele")) {
        document.write("Elemento Ukulele Encontrado<br/>");
        document.write("Está na posição " + cordas.indexOf("Ukulele") + "<br/>");
    }
    else {
        document.write("Elemento Ukulele Não Encontrado<br/>");
    }
    
    

    Podemos também unir dois os mais arrays e formar um novo com o método concat(), o método sort() serve pra ordenar os elementos em ordem alfabética, veja um exemplo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho", "Contrabaixo"];
    var percussao = ["Bateria", "Surdo", "Timbau", "Congas", "Repique"];
    var teclas = ["Teclado", "Piano"];
    var sopro = ["Sax", "Trompete", "Trombone", "Flauta", "Flugelhorn"];
    
    var instrumentos = cordas.concat(percussao, teclas, sopro);
    
    document.write("<br/>Listando os instrumentos:<br/><br/>");
    
    instrumentos.sort();
    
    for(let i = 0; i < instrumentos.length; i++) {
        document.write(instrumentos[i] + "<br/>");
    }
    
    

    Arrays - Ordenação de Elementos

    Como já visto, o método sort() é usado para ordenar os elementos em ordem alfabética, por exemplo:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho", "Contrabaixo"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    document.write("<br/>Em ordem alfabética:<br/><br/>");
    
    cordas.sort();
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Mas o método sort() só ordena strings, não funciona com números, já que ele ordena pelas posição do primeiro caractere e trata números como strings.

    Para ele ordenar números, usamos uma função antes e colocamos o argumento dela dentro do método sort(), por exemplo

    
    var numeros = [14, 23, 6, 38, 9, 13, 52, 7, 5];
    
    function ordenar(a, b) {
        return a > b ? 1 : (a < b ? -1 : 0);
    }
    
    numeros.sort(ordenar);
    
    for(let i = 0; i < numeros.length; i++) {
        document.write(numeros[i] + "<br/>");
    }
    
    

    A parte da function pode ser simplificada assim, mas pode dar problema pra números muito grandes:

    
    function ordenar(a, b) {
        return a - b;
    }
    
    

    Para ordenar em ordem descendente de posições (definidas no script), usamos o método reverse() assim:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho", "Contrabaixo"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    document.write("<br/>Em ordem inversa do script:<br/><br/>");
    
    cordas.reverse();
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Para inverter em ordem alfabética, basta simplesmente colocar o método sort() antes do reverse(), assim:

    
    var cordas = ["Violão", "Guitarra", "Cavaquinho", "Contrabaixo"];
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    document.write("<br/>Em ordem alfabética inversa:<br/><br/>");
    
    cordas.sort();
    cordas.reverse();
    
    for(let i = 0; i < cordas.length; i++) {
        document.write(cordas[i] + "<br/>");
    }
    
    

    Para fazer o mesmo com números, basta inverter os valores do return assim, de forma mais simples:

    
    var numeros = [14, 23, 6, 38, 9, 13, 52, 7, 5];
    
    function ordenar(a, b) {
        return b - a;
    }
    
    numeros.sort(ordenar);
    
    for(let i = 0; i < numeros.length; i++) {
        document.write(numeros[i] + "<br/>");
    }