introducir
Ayer vi el telescopio en casa, vi la sección sobre matrices y mencioné un método de matriz en ES6 Array.from()
, que se describe en el libro de la siguiente manera:
El primer argumento de Array.from() es un objeto similar a una matriz, es decir, cualquier estructura iterable.
from() se usa para convertir una estructura similar a una matriz en una instancia de matriz... realiza una copia superficial de una matriz existente
Esto se entiende bien, from() puede convertir Set
y Map
tipos Array
y cualquier tipo iterable en matrices. Object.assign()
La copia superficial no es difícil de entender. Hay una copia superficial de objetos antes de , por lo que Array.from()
no es demasiado tener una matriz.
Lo que me interesa son los dos últimos parámetros:
El segundo argumento de Array.from() es una función de mapeo opcional que aumenta los valores de la nueva matriz sin
Array.from().map()
crear una matriz intermedia como en la llamada.
También puede aceptar un tercer parámetro opcional para especificarthis
el valor en la función de mapeo
La sintaxis general es esta:
Array.from(arrayLike[, mapFn[, thisArg]])
Entonces, este método se puede usar para procesar objetos de matriz y devolver una nueva matriz después de procesar los campos en cada objeto. Suena como una map()
réplica de , pero de hecho, es map()
el ancestro de .
No solo se usa para manejar arreglos, tiene que lidiar con arreglos de clases y arreglos. Como se mencionó anteriormente, si usa 类数组
map(), necesita Array.from()
convertir a un arreglo antes de usar map()
el método. Ahora Array.from() le ahorra directamente este paso, que es equivalente a aplicar directamente la función de map() a las matrices de clase.
ejemplo sencillo
Use una función para modificar el nombre del campo en el objeto de matriz: ¡
cámbielo en la función para mejorar la salida!
¡Esto en la segunda función apunta a un objeto que personalizamos, que se llama en la función para procesar los elementos de la matriz, y finalmente devuelve una nueva matriz!