Recursos do ECMAScript 5

Estes são os novos recursos lançados em 2009:

参考页面:https://www.w3school.com.cn/js/js_es5.asp

Recursos do ECMAScript 5

  • Diretiva "use strict"
  • String.trim()
  • Array.isArray()
  • Array.forEach()
  • Array.map()
  • Array.filter()
  • Array.reduce()
  • Array.reduceRight()
  • Array.every()
  • Array.some()
  • Array.indexOf()
  • Array.lastIndexOf()

  • JSON.parse()
  • JSON.stringify()
  • Date.now()
  • Getters e Setters de Propriedades
  • Novos métodos e propriedades de objetos

Alterações de Sintaxe no ECMAScript 5

  • Acesso a propriedades de strings através de colchetes [ ]
  • Vírgulas à direita em literais de arrays e objetos
  • Literais de strings multilinha
  • Palavras reservadas como nomes de propriedades

String.trim()

O método String.trim() remove os espaços em branco das extremidades da string.

var texto = "      Olá Mundo!        ";
console.log(texto.trim());
// Saída: "Olá Mundo!"

Array.isArray()

O método isArray() verifica se um objeto é um array.

var frutas = ["Banana", "Laranja", "Maçã", "Manga"];
Array.isArray(frutas)
// Saída: true

Array.forEach()

O método forEach() executa uma função para cada elemento do array.

let total = 0;
[1, 2, 3, 4, 5].forEach(item =>{
    total += item;
});
console.log(total);
// Saída: 15

Array.map()

O método map() cria um novo array executando uma função em cada elemento.

O método map() não executa a função para elementos sem valor.

O método map() não altera o array original.

map(valor, indice, array) possui três parâmetros: valor do item, índice do item, próprio array

[45, 4, 9, 16, 25].map((valor, indice, array) => {
    return valor * 2;
});
// Saída: [90, 8, 18, 32, 50]

Diferenças entre forEach e map()

Semelhanças:

1.Ambos iteram sobre cada elemento do array

2.Cada execução da função anônima aceita três parâmetros: item (elemento atual), índice, array original

3.O this dentro da função anônima aponta para window

4.Só podem iterar sobre arrays

Diferenças:

1.map() aloca memória para armazenar e retornar um novo array, forEach() não retorna dados.

2.forEach() permite que o calblack modifique os elementos do array original. map() retorna um novo array.

forEach() executa a função fornecida para cada elemento, modificando o array original.

Uso: quando você não pretende alterar os dados, mas apenas fazer algo com eles, como salvar no banco de dados ou imprimir.

var numeros = [0, 2, 4, 6, 8];
var resultado = numeros.forEach(function(item, indice, numeros){
  console.log(this);
  console.log(numeros);
  numeros[indice] = item / 2;
}, this);
console.log(numeros);
console.log(resultado);

map() não altera o array original, retorna um novo array com os valores processados pela função.

Uso: map() é adequado quando você precisa transformar os valores dos dados. Não apenas por ser mais rápido, mas também por retornar um novo array.

var dados = [0, 2, 4, 6, 8];
var transformado = dados.map(function(item, indice, dados){
    console.log(this);
    console.log(dados);
    return item / 2;
}, this);
console.log(transformado);

Array.filter()

O método filter() cria um novo array com todos os elementos que passam no teste.``` [45, 4, 9, 16, 25].filter((valor, indice, array) => { return valor > 18; }); // Saída: [45, 25]


### Array.reduce()

arr.reduce(function(anterior, atual, indice, arr){
...
}, inicial);Utiliza o valor inicial ou o valor retornado da iteração anterior junto com o item atual para executar a operação e retornar o resultado.Onde:
**arr** representa o array original;
**anterior** representa o valor retornado na chamada anterior do callback, ou o valor inicial;
**atual** representa o elemento do array sendo processado atualmente;
**indice** representa o índice do elemento atual; se o valor inicial for fornecido, começa em 0, caso contrário começa em 1;
**inicial** representa o valor inicial. reduce() é um método de **redução** do array, assim como forEach(), map(), filter() e outros métodos de **iteração** que percorrem cada elemento do array, porém reduce() pode realizar operações entre o resultado acumulado das iterações anteriores e o elemento atual, algo que os outros métodos de iteração não conseguem fazer.var lista = [3, 9, 4, 3, 6, 0, 9];
var soma = lista.reduce(function (anterior, atual) {
return anterior + atual;
}, 0);

// Resultado: 34

O método every() verifica se todos os elementos do array passam no teste. Equivalente à operação lógica AND (&&). Retorna true apenas se todos passarem, caso contrário retorna false.

Observe que esta função aceita 3 parâmetros:

  • Valor do item
  • Índice do item
  • Array completo

Se o callback utilizar apenas o primeiro parâmetro (valor), os outros podem ser omitidos:

// Resultado da função: false


Array.some()
------------

O método some() verifica se alguns elementos do array passam no teste. Equivalente à operação lógica OR (||). Retorna true se pelo menos um passar, false apenas se nenhum passar.


var numeros = [45, 4, 9, 16, 25]; var algumMaior18 = numeros.some(minhaFuncao);

function minhaFuncao(valor, indice, array) { return valor > 18; } // Resultado: true


Array.indexOf()
---------------

array.indexOf(item, start);
item: obrigatório, o item a ser procurado;
start: opcional, a posição inicial da busca. Valores negativos iniciam a busca a partir do final.

**Se o item aparecer múltiplas vezes, retorna a posição da primeira ocorrência. Se o item não for encontrado, Array.indexOf() retorna -1.**
O método indexOf() busca um valor no array e retorna sua posição.
Nota: A primeira posição é 0, a segunda é 1, e assim por diante.

Array.lastIndexOf()
-------------------

Array.lastIndexOf() funciona como Array.indexOf(), mas a busca começa do final do array.

Array.find()
------------

O método find() retorna o valor do primeiro elemento que passa na função de teste.

Array.findIndex()
-----------------

O método findIndex() retorna o índice do primeiro elemento que passa na função de teste.

Publicado em 6-18 18:44