Uploaded by Guilherme Soares

02-javascript

advertisement
DESENVOLVIMENTO DE SISTEMAS CORPORATIVOS
JAVASCRIPT
Yuri Malheiros
(yuri@dcx.ufpb.br)
SETS
Um Set é uma lista de valores que não possui valores duplicados
Normalmente você não acessa itens individuais num Set
É mais comum checar se um item está presente ou não
Para criar um Set usa-se new Set()
Para adicionar um elemento usa-se o método add()
Para checar o tamanho do Set usa-se a propriedade size
let set = new Set();
set.add(5);
console.log(set.size);
SETS
Elementos repetidos não são adicionados pelo método add()
let set = new Set();
set.add(5);
set.add(5);
console.log(set.size);
O tamanho continua sendo 1
SETS
Sets não fazem conversões implícitas para determinar se os elementos são iguais
let set = new Set();
set.add(5);
set.add("5");
console.log(set.size);
O tamanho nesse caso é 2
SETS
Objetos também podem ser adicionados aos Sets
let set = new Set();
set.add({name: "João"});
set.add({name: "José"});
console.log(set.size);
Não é feita uma comparação deep para verificar igualdade entre objetos
let set = new Set();
set.add({name: "João"});
set.add({name: "João"});
console.log(set.size);
O tamanho nos dois casos é 2
SETS
É possível iniciar um Set usando um array
Elementos repetidos são ignorados
let set = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
console.log(set.size);
SETS
Para verificar se um valor faz parte de um Set usa-se o método has()
let set = new Set();
set.add(4);
set.add(5);
console.log(set.has(5));
console.log(set.has(6));
// true
// false
SETS
Para remover um valor usa-se o método delete()
Podemos remover todos os valores usando o método clear()
let set = new Set();
set.add(4);
set.add(5);
console.log(set.has(5));
// true
set.delete(5);
console.log(set.has(5)); // false
console.log(set.size);
// 1
set.clear();
console.log(set.has(4)); // false
console.log(set.size);
// 0
SETS
Podemos varrer um Set usando o método forEach()
A função callback recebe três parâmetros:
O valor do elemento, o valor do elemento novamente e o próprio Set
let set = new Set([1, 2]);
set.forEach(function(value, key, ownerSet) {
console.log(key + " " + value);
console.log(ownerSet === set);
});
SETS
É possível converter um Set para um array utilizando o operador spread
let set = new Set([1, 2, 3, 3, 3, 4, 5]);
let array = [...set];
console.log(array);
MAPS
Um Map é uma lista ordenada de pares chave-valor
A chave e o valor podem ser de qualquer tipo, inclusive objetos
Um valor pode ser adicionado usando o método set() passando a chave e o valor
Um valor pode ser recuperado usando o método get() passando a chave
let map = new Map();
map.set("title", "UFPB");
map.set("year", 2017);
console.log(map.get("title"));
console.log(map.get("year"));
// "UFPB"
// 2017
MAPS
Os Maps possuem os métodos:
has(key), verifica se a chave existe no Map
delete(key), remove uma chave e o seu valor associado
clear(key), remove todas as chaves e valores do Map
size(), retorna o número de pares chave-valor contidos no Map
let map = new Map();
map.set("name", "Nicholas");
map.set("age", 25);
console.log(map.size);
// 2
console.log(map.has("name")); // true
console.log(map.get("name")); // "Nicholas"
map.delete("name");
console.log(map.has("name")); // false
console.log(map.get("name")); // undefined
console.log(map.size);
// 1
MAPS
Podemos inicializar um Map através de arrays
let map = new Map([["name", "Nicholas"], ["age", 25]]);
console.log(map.has("name")); // true
console.log(map.get("name")); // "Nicholas"
console.log(map.has("age")); // true
console.log(map.get("age")); // 25
console.log(map.size);
// 2
O parâmetro passado é um array de arrays
Cada array dentro do array é um par que representa a chave e o valor
MAPS
Podemos varrer um Map usando o método forEach()
A função callback recebe três parâmetros:
O valor do elemento, a chave e o próprio Map
let map = new Map([ ["name", "Nicholas"], ["age", 25]]);
map.forEach(function(value, key, ownerMap) {
console.log(key + " " + value);
console.log(ownerMap === map);
});
FOR
Usando ES6 podemos criar laços usando for-in e for-of
O for-in itera sobre os índices ou chaves
let x = ["a", "b", "c"];
let y = {name: "João", age: 30};
for (let index in x) {
console.log(index);
}
for (let key in y) {
console.log(key);
}
FOR
Usando ES6 podemos criar laços usando for-in e for-of
O for-of itera sobre os valores
let x = ["a", "b", "c"];
for (let value of x) {
console.log(value);
}
Por uma questão de implementação o for-of não funciona com objetos literais
REFERÊNCIAS
https://babeljs.io/learn-es2015/
https://leanpub.com/understandinges6/read
https://github.com/getify/You-Dont-KnowJS/blob/master/es6%20&%20beyond/README.md
Download