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