A versão 72 do Chrome lançou alguns novos recursos interessantes do ES10:
.Flat():
O método flat() cria um novo vetor recursivamente com todos os elementos do sub-vetor concatenados nele até a profundidade especificada.
let vetor = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]];
vetor.flat();
// (7) [1, 2, 3, 4, 5, 6, Array(4)]
vetor.flat().flat();
// (10) [1, 2, 3, 4, 5, 6, 7, 8, 9, Array(3)]
vetor.flat().flat().flat();
//(12) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
vetor.flat(Infinity);
//(12) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
.flatMap():
O método flatMap() primeiramente mapeia cada elemento do vetor usando uma função e mapeamente para, em seguida, nivelar o resultado em um novo array. O flatMap é bastante útil, pois mescla um mapa seguido por um flat de profundidade 1 em um método mais eficiente.
let vetor = [1, 2, 3, 4, 5];
vetor.map(x => [x, x*2]);
// (5) [Array(2), Array(2), Array(2), Array(2), Array(2)]
// 0: (2) [1, 2]
// 1: (2) [2, 4]
// 2: (2) [3, 6]
// 3: (2) [4, 8]
// 4: (2) [5, 10]
vetor.flatMap(v=>[v, v*2]);
// (10) [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]
Object.fromEntries():
O método Object.fromEntries() transforma uma lista de pares de valores-chave em um objeto.
Exemplo 1:
let obj = {
chave1:'valor1',
chave2:'valor2',
chave3:'valor3'
}
let entries = Object.entries(obj);
console.log(entries);
// (3) [Array(2), Array(2), Array(2)]0: (2) ["chave1", "valor1"]1: (2) ["chave2", "valor2"]2: (2) ["chave3", "valor3"]
let fromEntries = Object.fromEntries(entries);
console.log(fromEntries);
// {chave1: "valor1", chave2: "valor2", chave3: "valor3"}
Exemplo 2:
let entries = new Map([
['nome', 'ben'],
['idade', 25]
]);
Object.fromEntries(entries);
// {nome: "ben", idade: 25}
String.trimStart() & String.trimEnd():
O método trimStart() remove espaços em branco do início de uma string. O método trimEnd() remove espaços em branco do final de uma string.
let olaMundo = " Olá Mundo! ";
console.log(JSON.stringify(olaMundo.trimEnd()));
// " Olá Mundo!"
console.log(JSON.stringify(olaMundo.trimStart()));
// "Olá Mundo! "
Optional Catch Binding:
Permite que os desenvolvedores usem try / catch sem criar uma ligação não utilizada. Você pode fazer uso do catch block sem um parâmetro.
try {
throw new Error("sem erro");
} catch {
console.log("nenhum parâmetro no catch");
}
// nenhum parâmetro no catch
Antes era obrigatório usar parâmetro no catch block:
try {
throw new Error ("Algum erro aleatório");
} catch(e) {
console.log(e);
}
// Error: Algum erro aleatório
Continue lendo “Novidades no ECMAScript 2019 (ES2019)/ES10”