Resuma vários métodos de conversão de objetos semelhantes a matrizes em matrizes reais em JavaScript

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

argumentsO objeto não é um Array. É semelhante Array, mas não tem nenhum Arrayatributo 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

Acho que você gosta

Origin blog.csdn.net/qq_43377853/article/details/109706303
Recomendado
Clasificación