5 JavaScript-Möglichkeiten zum Abflachen von Arrays

5 JavaScript-Möglichkeiten zum Abflachen von Arrays

1. Konzept der Array-Abflachung

Unter Array-Flattening versteht man die Konvertierung eines mehrdimensionalen Arrays in ein eindimensionales Array.

[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]

2. Umsetzung

1. Reduzieren

Durchlaufen Sie jedes Element im Array. Wenn der Wert ein Array ist, führen Sie die Durchlauf rekursiv durch, andernfalls concat .

Funktion flatten(arr) {  
    return arr.reduce((Ergebnis, Element)=> {
        Rückgabeergebnis.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
}

reduce ist eine Array-Methode, die eine Funktion als Akkumulator verwendet und sie für jeden Wert im Array (von links nach rechts) auf einen einzelnen Wert reduziert.
reduce enthält zwei Parameter: Callback-Funktion, der an total übergebene Anfangswert

// Finde die Summe der Werte im Array: 
arr.reduce((total, item)=> { // total ist das vorherige Berechnungsergebnis, item ist der Wert jedes Elements im Array return total + item;
}, 0);

2. toString & teilen

Rufen Sie die toString -Methode des Arrays auf, um das Array in einen String umzuwandeln, und verwenden Sie dann split, um es wieder in ein Array aufzuteilen.

Funktion flatten(arr) {
    return arr.toString().split(',').map(Funktion(Element) {
        gib Nummer (Artikel) zurück;
    })
}

Da jedes Element im nach der Aufteilung gebildeten Array ein String ist, wird eine Map-Methode benötigt, um das Array zu durchlaufen und jedes Element in einen numerischen Typ zu konvertieren.

3. Verbinden und Teilen

Wie toString oben kann join auch ein Array in einen String umwandeln

Funktion flatten(arr) {
    returniere arr.join(',').split(',').map(Funktion(Element) {
        gibt parseInt(Element) zurück;
    })
}

4. Rekursion

Durchlaufe jedes Element rekursiv. Wenn es ein Array ist, fahre mit dem Durchlauf fort, andernfalls concat

Funktion flatten(arr) {
    var res = [];
    arr.map(Element => {
        wenn(Array.isArray(item)) {
            res = res.concat(flatten(Element));
        } anders {
            res.push(Element);
        }
    });
    Rückgabewert;
}

5. Spread-Operator

Der Spread-Operator von es6 kann ein zweidimensionales Array in ein eindimensionales Array umwandeln

[].concat(...[1, 2, 3, [4, 5]]); // [1, 2, 3, 4, 5]

Basierend auf diesem Ergebnis können wir eine Traversierung durchführen. Wenn arr ein Array enthält, verwenden wir den Erweiterungsoperator einmal, bis kein Array mehr vorhanden ist.

Funktion flatten(arr) {
    während(arr.some(item=>Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    Rückflug an;
}

Zusammenfassen:

Damit ist dieser Artikel über 5 JavaScript Methoden zum Reduzieren eines Arrays abgeschlossen. Weitere Informationen zum Reduzieren eines Arrays mit JavaScript finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Details zur JS-Array-Deduplizierung
  • Detaillierte Diskussion mehrerer Methoden zur Deduplizierung von JavaScript-Arrays
  • Detaillierte Untersuchung des Problems der Array-Deduplizierung in JavaScript
  • JavaScript-Array-Deduplizierungslösung
  • js implementiert Array-Abflachung
  • Detaillierte Erklärung zur JavaScript-Datenabflachung
  • JavaScript-Interview: So implementieren Sie die Methode zur Array-Abflachung
  • Einführung in JavaScript-Array-Deduplizierungs- und -Flatteningfunktionen

<<:  Detaillierte Erklärung der Lösung für das zu langsame Docker-Compose

>>:  Eine kurze Diskussion über die Unterschiede und eine Zusammenfassung der drei Gleitkommatypen Float, Double und Decimal in MySQL

Artikel empfehlen

Detailliertes Tutorial zur Installation von MySQL auf CentOS 6.9

1. Bestätigen Sie, ob MySQL installiert wurde. Si...

SQL-Implementierung von LeetCode (182. Doppelte Postfächer)

[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...

So erhalten Sie den Inhalt einer TXT-Datei über FileReader in JS

Inhaltsverzeichnis JS erhält den Inhalt der TXT-D...

Wie wird eine SQL-Anweisung in MySQL ausgeführt?

Inhaltsverzeichnis 1. Analyse der MySQL-Architekt...

Verwenden von js zum Implementieren eines Zahlenratespiels

Letzte Woche gab mir der Lehrer eine kleine Hausa...

CocosCreator Universal Framework Design Network

Inhaltsverzeichnis Vorwort WebSocket verwenden Er...

Vue - benutzerdefinierte gekapselte Schaltflächenkomponente

Der benutzerdefinierte Kapselungscode der Vue-But...

JavaScript zum Erzielen eines Zeitlupenanimationseffekts

In diesem Artikel wird der spezifische Code für J...

Installation, Aktivierung und Konfiguration von ModSecurity unter Apache

ModSecurity ist ein leistungsstarkes Paketfiltert...

Detaillierte Analyse von or, in, union und Indexoptimierung in MySQL

Dieser Artikel entstand aus der Hausaufgabe „Erle...