HOWTO · JavaScript

Arrays in JavaScript zippen

Dieser Artikel hilft Ihnen zu verstehen, wie Sie zwei oder mehr Arrays in JavaScript komprimieren.

In JavaScript gibt es Situationen, in denen wir zwei Arrays komprimieren möchten. In diesem Tutorial untersuchen wir das Flashen von zwei Sammlungen mit JavaScript.

Das JavaScript-Gegenstück der Python-Funktion zip muss geschrieben werden. Mit anderen Worten, wir müssen ein Array von Paaren erstellen, wenn viele Sammlungen gleicher Länge gegeben sind.

Es gibt verschiedene Möglichkeiten, wie wir zwei Arrays in JavaScript komprimieren können, z. B. die Verwendung der Methode map(), der Methode Array.from() und der Methode Array.prototype.fill().

Verwenden Sie die map-Methode zum Zippen von Arrays in JavaScript

Die Funktion map() in JavaScript komprimiert zwei Arrays einer bestimmten Länge. Es ergibt jedoch undefined, wenn die Länge beider Arrays nicht übereinstimmt.

let a = [9, 8, 7];
let b = ['1', '2', '3'];
let zip = a.map(function(e, i) {
  return [e, b[i]];
});
console.log(zip);

Code ausführen

Die Rückruffunktion, die die Methode map() akzeptiert, ruft die Elemente des Arrays a und die Elemente des Arrays b auf, die der Sammlung a zugeordnet sind. Es ist auch einfach zu lernen, wie man auf diese Weise einen Reißverschluss herstellt.

Ausgabe:

[[9, "1"], [8, "2"], [7, "3"]]

Stellen Sie bei der Verwendung der map-Methode sicher, dass die Länge beider Arrays gleich sein muss; Andernfalls erhalten Sie das Ergebnis 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);

Demo hier

Sie können sehen, dass die Längen der Arrays a und b unterschiedlich sind.

Ausgabe:

[[9, "1"], [8, "2"], [7, "3"], [6, undefined]]

Verwenden Sie die Methode Array.from zum Zippen von Arrays in 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));

Code ausführen

In der Instanz der Methode Array.from sind zwei Arrays vorhanden; Sie werden an eine Pfeilfunktion gesendet. Nach dem Anpassen der Länge ordnet der Prozess die Elemente aus zwei separaten Arrays zu.

Ausgabe:

[[9, "90"], [8, "80"], [7, "70"], [6, "60"]]

Darüber hinaus gibt die entsprechende Karte undefined für jedes fehlende Element aus.

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));

Demo hier

Ausgabe:

[[9, "90"], [8, "80"], [7, "70"], [undefined, "60"]]

Die Methode Array.prototype.fill() funktioniert genauso wie die Methode 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));

Code ausführen

Ausgabe:

[[7, "70"], [8, "80"], [9, "90"]]