Resuma vários métodos de conversão de objetos semelhantes a matrizes em matrizes reais em JavaScript
Os objetos comuns do tipo array têm basicamente os seguintes tipos:
let arrayLike ={
'0': 'a',
'1': 'b',
'2': 'c',
length :3
}
// 这种类数组是未定义遍历接口的对象
const oDiv = document.querySelectorAll('div'); // 定义了遍历器接口的对象
Outro tipo de array é o objeto de argumento dentro da função
arguments
O objeto não é um Array
. É semelhante Array
, mas não tem nenhum Array
atributo diferente do atributo de comprimento e do elemento de índice
Como escrever em ES5
var arr1 = [].slice.call(obj);
var arr2 = [].slice.call(obj);
var arr3 = Array.prototype.slice.call(obj);
Novos métodos em ES6
O método Array.from é usado para converter objetos semelhantes a matrizes e objetos percorríveis em matrizes reais
Contanto que a estrutura de dados da interface Iterator (traversal) seja implantada, Array.from pode convertê-la em uma matriz real
const arr = Array.from(obj);
Indisponível para objetos que não estão programados para atravessar a interface
const arr4 = Array.from(arrayLike)
console.log(arr4)
// TypeError: object is not iterable
Operadores estendidos ES6
const args = [...arguments];
const arr5 = [...oDiv];
Indisponível para objetos que não estão programados para atravessar a interface
const arr6 = [...arrayLike]
console.log(arr2); // TypeError: object is not iterable
Array.of () (adição adicional)
Este método pode converter um conjunto de valores em uma matriz
Array.of(12,33,53) //[12,33,53]
O principal objetivo de adicionar este método é: para compensar as deficiências do construtor de array Array (), porque a diferença no número de parâmetros causará a diferença no comportamento de Array ()
Array.of pode basicamente ser usado no lugar de Array () ou new Array (), e não há sobrecarga devido a parâmetros diferentes e o comportamento é muito uniforme
Referências:
[1] Ruan Yifeng. "Introduction to ES6 Standards (Second Edition)" [M]. Beijing. Electronic Industry Press. 2015