Estrutura de Dados JS

11 flashcards · Programming Languages · by gio-bon

  1. A lógica de um objeto é a de um dicionário, armazenando chave : valor.

    Se você tem um dado tabular, você pode usar um objeto para pesquisar valores ao invés de uma instrução switch ou uma cadeia de if/else.Isso é mais útil quando você sabe que o seu dado de entrada é limitado para um certo intervalo. Um objeto JavaScript é uma forma de lidar com dados flexíveis. Eles permitem combinações arbitrárias de strings, numbers, booleans, arrays, functions e objects.

  2. Para alterar o valor de uma propriedade que já existe ou para criar uma nova o processo é o mesmo.

    Em: const ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] }; Para alterar name ourDog.name = "Happy Camper"; //ou... ourDog["name"] = "Happy Camper"; Para criar bark ourDog.bark = "bow-wow"; //ou... ourDog["bark"] = "bow-wow";

  3. Criação de objetos, duas formas de acessar suas propriedades e a diferença entre essas formas. Como deletar uma propriedade?

    const cat = { "name complete": "Whiskers", legs: 4, "tails": 1, "enemies": ["Water", "Dogs"], 2: 'two' //se tiver numero, o acesso ocorre apenas por [ ] }; Formas de acesso Notação de ponto let propEnemies = cat.enemies Notação de colchetes let propName = cat["name complete"] Para deletar 2 delete cat[2];

  4. const dogs = { Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle" }; const myDog = "Hunter"; const myBreed = dogs[myDog]; console.log(myBreed); O valor de myBreed é Doberman

    Para acesso a propriedades com variáveis, a notação de ponto não funciona. Exemplo de uso da notação de colchetes com variáveis dentro para acesso a propriedades de um objeto. Em dogs[myDog] não tem aspas porque é usado o valor da variável e não o nome.

  5. Para saber se om objeto dog tem a propriedade lastname, devo usar o método dog.hasOwnProperty(lastname);

    Se houver a propriedade, o método retorna true, se não, false.

  6. Em arrays com objetos dentro, como acessar as propriedades dos objetos? const ourPets = [ { animalType: "cat", names: [ "Meowzer", "Fluffy", "Kit-Cat" ] }, { animalType: "dog", names: [ "Spot", "Bowser", "Frankie" ] } ];

    A notação de colchetes pode ser encadeada para se acessar arrays aninhados. const ourPets = [ { animalType: "cat", names: [ "Meowzer", "Fluffy", "Kit-Cat" ] }, { animalType: "dog", names: [ "Spot", "Bowser", "Frankie" ] } ]; ourPets[0].names[1]; //Fluffy ourPets[1].names[0]; //Spot

  7. Em objetos com outros objetos aninhados, como você faz para acessar as propriedades mais internas? const ourStorage = { "desk": { "drawer": "stapler" }, "cabinet": { "top drawer": { "folder1": "a file", "folder2": "secrets" }, "bottom drawer": "soda" } };

    As subpropriedades de objetos podem ser acessadas ao encadear a notação de ponto ou de colchetes. const ourStorage = { "desk": { "drawer": "stapler" }, "cabinet": { "top drawer": { "folder1": "a file", "folder2": "secrets" }, "bottom drawer": "soda" } }; ourStorage.desk.drawer; //stapler ourStorage.cabinet["top drawer"].folder2; // secrets

  8. Como percorrer arrays multidimensionais.

    Percorre os arrays mais internos multiplicando esses valores em uma variável chamada product. function multiplyAll(arr) { let product = 1; for(let i = 0;i < arr.length;i++){ for(let j = 0; j< arr[i].length;j++){ product *= parseInt(arr[i][j]); } } return product; } multiplyAll([[1, 2], [3, 4], [5, 6, 7]]); //5040

  9. Qual a diferença entre as iterações em um laço while e o laço do...while.

    Em while, o código abaixo não faz nada (porque a condição é avaliada false logo no início) const ourArray = []; let i = 5; while (i < 5) { ourArray.push(i); i++; } Enquanto que em do...while é feito a operação de incluir o valor de i no array, e depois é avaliado a condição como false, interrompendo o laço. const ourArray = []; let i = 5; do { ourArray.push(i); i++; } while (i < 5);

  10. Recursão é quando uma função chama/executa ela mesma. Outro requisito para elas é que precisam de um caso base para interromper sua repetição.

    function factorial(n){ if(n == 1){ return 1 } return n * factorial(n - 1) } factorial(4); //24 O fatorial funciona com chamadas da função, ou como se fossem pilhas empilhadas cada vez que a função chama ela mesma. Quando atinge o caso base numero === 1 a recursão para de acontecer e volta com os valores sendo resolvidos: fatorial(4)=4∗3∗2∗1=6fatorial(4) = 4 * 3 * 2 * 1 = 6fatorial(4)=4∗3∗2∗1=6 . [VIDEO EXPLICAÇÃO]

  11. Recursividade em operações dentro de arrays. Ex: Escreva uma função recursiva, sum(arr, n), que retorna a soma dos primeiros n elementos de um array arr.

    Solução function sum(arr, n) { if(n == 1){ //caso base (parada) return arr[0]; else { return arr[n-1] + sum(arr, n-1) } } sum([2, 3, 4, 5], 3); // 2+3+4 = 9 A função pede a soma dos elementos do array até determinado índice n (que no caso acima é 3). Se for na condição de parada ele retorna o primeiro número do array return arr[0]. Caso contrário, faz a recursão que se somará à posição do array inicial (de trás pra frente, no caso n-1 porque os índices começam em 0).