HOWTO · JavaScript
Comprimir Arrays en JavaScript
Este artículo lo ayuda a comprender cómo comprimir dos o más arrays en JavaScript.
En esta página
En JavaScript, hay situaciones en las que deseamos comprimir dos matrices. Examinaremos flashear dos colecciones con JavaScript en este tutorial.
Se debe escribir la contrapartida de JavaScript de la función zip de Python. En otras palabras, necesitamos hacer una matriz de pares dadas muchas colecciones de igual longitud.
Hay diferentes formas en las que podemos comprimir dos arreglos en JavaScript, como usar el método map(), el método Array.from() y el método Array.prototype.fill().
Use el método map para comprimir arreglos en JavaScript
La función map() en JavaScript comprime dos matrices de cierta longitud. Sin embargo, da como resultado undefined si la longitud de ambas matrices no coincide.
let a = [9, 8, 7];
let b = ['1', '2', '3'];
let zip = a.map(function(e, i) {
return [e, b[i]];
});
console.log(zip);
La función de devolución de llamada que acepta el método map() llamará a los elementos del array a y los elementos del array b mapeados con la colección a. También es sencillo aprender a cerrar la cremallera de esta manera.
Producción :
[[9, "1"], [8, "2"], [7, "3"]]
Al usar el método map, asegúrese de que la longitud de ambos arrays debe ser la misma; de lo contrario, obtendrá el resultado undefined.
let a = [9, 8, 7, 6];
let b = ['1', '2', '3'];
let zip = a.map(function(e, i) {
return [e, b[i]];
});
console.log(zip);
Puede ver que las longitudes de las matrices a y b son diferentes.
Producción :
[[9, "1"], [8, "2"], [7, "3"], [6, undefined]]
Utilice el método Array.from para comprimir arrays en JavaScript
let a = [9, 8, 7, 6];
let b = ['90', '80', '70', '60'];
let zip = (a, b) =>
Array.from(Array(Math.max(a.length, b.length)), (_, i) => [a[i], b[i]]);
console.log(zip(a, b));
Dos arrays estarán presentes en la instancia del método Array.from; serán enviados a una función de flecha. Después de hacer coincidir la longitud, el proceso asignará los elementos de dos arrays separadas.
Producción :
[[9, "90"], [8, "80"], [7, "70"], [6, "60"]]
Además, el mapa equivalente dará como resultado undefined para cualquier elemento que falte.
let a = [9, 8, 7];
let b = ['90', '80', '70', '60'];
let zip = (a, b) =>
Array.from(Array(Math.max(a.length, b.length)), (_, i) => [a[i], b[i]]);
console.log(zip(a, b));
Producción :
[[9, "90"], [8, "80"], [7, "70"], [undefined, "60"]]
El método Array.prototype.fill() funciona igual que el método Array.from().
let a = [7, 8, 9];
let b = ['70', '80', '90'];
let zip = (a, b) =>
Array(Math.max(a.length, b.length)).fill().map((_, i) => [a[i], b[i]]);
console.log(zip(a, b));
Producción :
[[7, "70"], [8, "80"], [9, "90"]]