Nützliche Array- und Objektmethoden in JavaScript

Die Autorin des Artikels, dessen Übersetzung wir heute veröffentlichen, sagt, dass eine der Ausgaben des Syntax FM- Podcasts, die einen Überblick über nützliche Methoden von Objekten und Arrays in JavaScript gab, ihre Idee angeregt hat. Diese Methoden helfen Entwicklern, sauberen, lesbaren Code zu schreiben. Ihre Verwendung reduziert den Bedarf an Bibliotheken von Drittanbietern wie Lodash .

Bild

Array.prototype.filter ()


Die Methode Array.prototype.filter () erstellt ein neues Array, in das nur die Elemente des ursprünglichen Arrays fallen, die der angegebenen Bedingung entsprechen.

▍ Beispiel


Auf der Grundlage eines Arrays mit Informationen zu Schülern erstellen wir ein neues Array, in das nur Aufzeichnungen über diejenigen Schüler aufgenommen werden, deren Alter es ihnen ermöglicht, Alkohol zu kaufen.

const studentsAge = [17, 16, 18, 19, 21, 17]; const ableToDrink = studentsAge.filter( age => age > 18 ); //  ableToDrink    : [19, 21] 

Array.prototype.map ()


Mit der Methode Array.prototype.map () können Sie ein neues Array erstellen, das auf irgendwie verarbeiteten Werten eines anderen Arrays basiert. Diese Methode eignet sich hervorragend zum Ändern von Daten. Da sie keine Änderungen am ursprünglichen Array vornimmt, wird sie häufig in React verwendet.

▍ Beispiel


Erstellen Sie basierend auf dem Zahlenarray ein neues Array, an dessen Anfang jedes Element das $ -Zeichen steht.

 const numbers = [2, 3, 4, 5]; const dollars = numbers.map( number => '$' + number); //      dollars: ['$2', '$3', '$4', '$5'] 

Array.prototype.reduce ()


Die Methode Array.prototype.reduce () wird häufig zu Unrecht übersehen. Sie können das Array auf einen einzelnen Wert reduzieren, der sich im Empfängerelement ansammelt. Der von dieser Methode zurückgegebene Wert kann von einem beliebigen Typ sein. Beispielsweise kann es sich um ein Objekt, ein Array, eine Zeichenfolge oder eine Zahl handeln.

▍ Beispiel


Wir werden die .reduce() -Methode verwenden, um die Summe der Elemente eines numerischen Arrays zu erhalten.

 const numbers = [5, 10, 15]; const total = numbers.reduce( (accumulator, currentValue) => accumulator + currentValue); //   total    30 

Tatsächlich kann diese Methode auf viele interessante Arten verwendet werden. Relevante Beispiele finden Sie in der MDN-Dokumentation . Insbesondere geht es um das Erweitern von Arrays von Arrays, das Gruppieren von Objekten nach Eigenschaften und das Entfernen doppelter Elemente aus Arrays.

Array.prototype.forEach ()


Die Methode Array.prototype.forEach () wendet die an sie übergebene Funktion auf jedes Element des Arrays an.

▍ Beispiel


Hier .forEach() , wie Sie jedes Element des Arrays mit der Methode .forEach() an die Konsole .forEach() .

 const emotions = ['happy', 'sad', 'angry']; emotions.forEach( emotion => console.log(emotion) ); //   : // 'happy' // 'sad' // 'angry' 

Array.prototype.some ()


Die Methode Array.prototype.some () prüft, ob mindestens ein Element des Arrays der Bedingung entspricht, die von der an sie übergebenen Funktion angegeben wird. Diese Methode kann sich beispielsweise bei der Lösung der Aufgabe der Überprüfung von Benutzerrechten gut zeigen. Es kann als Analogon zu der zuvor betrachteten .forEach() , mit dem Unterschied, dass es bei Verwendung mit Hilfe der an sie übergebenen Funktion möglich ist, bestimmte Aktionen für die Array-Elemente auszuführen, bis diese Funktion den wahren Wert zurückgibt. dann die Verarbeitung unterbrechen.

▍ Beispiel


Überprüfen Sie, ob das Array mindestens eine admin enthält.

 const userPrivileges = ['user', 'user', 'user', 'admin']; const containsAdmin = userPrivileges.some( element => element === 'admin'); //  containsAdmin   true 

Array.prototype.every ()


Die Methode Array.prototype.every () ähnelt der .some() beschriebenen Methode .some() , gibt jedoch nur dann true zurück true wenn alle Elemente des Arrays die Bedingung erfüllen, die von der an diese Methode übergebenen Funktion angegeben wird.

▍ Beispiel


Überprüfen Sie, ob alle im Array gespeicherten Schätzungen gleich oder größer als 3 sind.

 const ratings = [3, 5, 4, 3, 5]; const goodOverallRating = ratings.every( rating => rating >= 3 ); //goodOverallRating   true 

Array.prototype.includes ()


Mit der Methode Array.prototype.includes () können Sie feststellen , ob ein Array einen bestimmten Wert enthält. Es ähnelt der .some() -Methode, überprüft jedoch nicht, ob die Elemente des Arrays einer bestimmten Bedingung entsprechen, sondern das Vorhandensein des im Array angegebenen Werts, wenn es aufgerufen wird.

▍ Beispiel


Überprüfen Sie, ob das Array ein Zeichenfolgenelement waldo :

 const names = ['sophie', 'george', 'waldo', 'stephen', 'henry']; const includesWaldo = names.includes('waldo'); // includesWaldo   true 

Array.from ()


Mit der statischen Methode Array.from () können Sie Arrays basierend auf anderen Arrays oder Strings erstellen. Bei Bedarf kann dieser Methode eine Funktion zum Durchführen einer Zuordnung übergeben werden, mit der Sie die Daten beeinflussen können, die in das neue Array fallen. Tatsächlich wird eine spezielle Methode für die Zuordnung bereitgestellt - Array.prototype.map (). Daher ist nicht ganz klar, warum jemand diese Funktion der Array.from() -Methode benötigt.

▍ Beispiel


Erstellen Sie ein Array basierend auf der Zeichenfolge.

 const newArray = Array.from('hello'); // newArray    ['h', 'e', 'l', 'l', 'o'] 

Erstellen Sie ein Array mit doppelten Werten der Elemente des ursprünglichen numerischen Arrays.

 const doubledValues = Array.from([2, 4, 6], number => number * 2); //   doubleValues    : [4, 8, 12] 

Object.values ​​()


Die Object.values ​​() -Methode gibt ein Array von Eigenschaftswerten des an sie übergebenen Objekts zurück.

▍ Beispiel


Wir bilden ein Array von Objekteigenschaftswerten.

 const icecreamColors = {   chocolate: 'brown',   vanilla: 'white',   strawberry: 'red', } const colors = Object.values(icecreamColors); //  colors    ["brown", "white", "red"] 

Object.keys ()


Die Object.keys () -Methode gibt ein Array zurück, das aus Objekteigenschaftsnamen (Schlüsseln) besteht.

▍ Beispiel


Wir werden ein Array von Objekteigenschaftsnamen bilden.

 const icecreamColors = { chocolate: 'brown', vanilla: 'white', strawberry: 'red', } const types = Object.keys(icecreamColors); //     types: ["chocolate", "vanilla", "strawberry"] 

Object.entries ()


Die Object.entries () -Methode gibt nach der Verarbeitung des an sie übergebenen Objekts ein Array zurück, das Arrays enthält, die Paare der Form [, ] , die Eigenschaftsnamen und Werte dieser Eigenschaften sind.

▍ Beispiel


Wir bilden ein Array, das für das für uns interessante Objekt Daten zu den Namen der Eigenschaften und deren Werten enthält.

 const weather = { rain: 0, temperature: 24, humidity: 33, } const entries = Object.entries(weather); //   entries    // [['rain', 0], ['temperature', 24], ['humidity', 33]] 

Erweiterungsoperator und Arrays


Mit dem Erweiterungsoperator ( Spread-Operator , ...), der auf Arrays angewendet wird, können Sie diese erweitern, indem Sie ihre Elemente aus ihnen extrahieren. Dieser Operator ist beispielsweise nützlich, wenn Sie mehrere Arrays kombinieren müssen. Darüber hinaus entfällt die Verwendung der .splice() -Methode, wenn Sie einige Elemente aus dem Array entfernen müssen, da sie mit der .slice() -Methode kombiniert werden kann, wodurch das ursprüngliche Array nicht .slice() .

▍ Beispiel


Kombinieren Sie die beiden Arrays.

 const spreadableOne = [1, 2, 3, 4]; const spreadableTwo = [5, 6, 7, 8]; const combined = [...spreadableOne, ...spreadableTwo]; //  combined   : [1, 2, 3, 4, 5, 6, 7, 8] 

Wir bilden ein neues Array, das das ursprüngliche Array ist, aus dem das Element gelöscht wurde. In diesem Fall sollte das ursprüngliche Array nicht geändert werden.

 const animals = ['squirrel', 'bear', 'deer', 'salmon', 'rat']; const mammals = [...animals.slice(0,3), ...animals.slice(4)]; // mammals   : ['squirrel', 'bear', 'deer', 'rat'] 

Erweiterungsoperator und Objekte


Durch Anwenden des Erweiterungsoperators auf Objekte können Sie ihnen neue Eigenschaften und Werte hinzufügen, ohne die ursprünglichen Objekte zu ändern (dh, durch solche Vorgänge werden neue Objekte erstellt). Darüber hinaus kann dieser Operator zum Kombinieren von Objekten verwendet werden. Hierbei ist zu beachten, dass der auf ein Objekt angewendete Erweiterungsoperator keine Auswirkungen auf darin verschachtelte Objekte hat.

▍ Beispiel


Erstellen Sie ein neues Objekt, indem Sie dem ursprünglichen Objekt eine neue Eigenschaft hinzufügen, ohne das ursprüngliche Objekt zu ändern.

 const spreadableObject = { name: 'Robert', phone: 'iPhone' }; const newObject = { ...spreadableObject, carModel: 'Volkswagen' } //  newObject   : // { carModel: 'Volkswagen', name: 'Robert', phone: 'iPhone' } 

Die Syntax der verbleibenden Funktionsparameter


Wenn Sie mit Funktionen arbeiten, können Sie die Syntax der verbleibenden Parameter verwenden, um den Empfang einer beliebigen Anzahl von Argumenten in Form eines Arrays zu organisieren.

▍ Beispiel


Wir drucken ein Array mit den an die Funktion übergebenen Argumenten.

 function displayArgumentsArray(...theArguments) { console.log(theArguments); } displayArgumentsArray('hi', 'there', 'bud'); //      ['hi', 'there', 'bud'] 

Object.freeze ()


Die Object.freeze () -Methode „friert“ ein Objekt ein und verhindert, dass die vorhandenen Eigenschaften dieses Objekts das Objekt ändern oder neue Eigenschaften und Werte hinzufügen. Es besteht ein Missverständnis, dass diese Methode dem Deklarieren von Objekten mit dem Schlüsselwort const ähnelt. Konstante Objekte können jedoch geändert werden.

▍ Beispiel


Wir "frieren" ein Objekt ein, danach versuchen wir, seine Eigenschaft zu ändern und stellen sicher, dass dies nicht möglich ist.

 const frozenObject = { name: 'Robert' } Object.freeze(frozenObject); frozenObject.name = 'Henry'; //  frozenObject  ,     { name: 'Robert' } 

Object.seal ()


Mit der Object.seal () -Methode können Sie das Objekt "versiegeln" und so das Hinzufügen neuer Eigenschaften verhindern. Gleichzeitig können vorhandene Eigenschaften geändert werden.

▍ Beispiel


Wir "versiegeln" das Objekt, wodurch wir keine neue Eigenschaft hinzufügen können, sondern vorhandene Eigenschaften ändern können.

 const sealedObject = { name: 'Robert' } Object.seal(sealedObject); sealedObject.name = 'Bob'; sealedObject.wearsWatch = true; //  sealedObject   : { name: 'Bob' } 

Object.assign ()


Mit der Object.assign () -Methode können Sie Objekte kombinieren, indem Sie Eigenschaften von einem Objekt in ein anderes kopieren. Tatsächlich kann der gleiche Effekt unter Verwendung des oben beschriebenen Expansionsoperators erzielt werden, so dass auf dieses Verfahren vollständig verzichtet werden kann. Es ist zu beachten, dass diese Methode wie der Erweiterungsoperator kein tiefes Klonen von Objekten durchführt. Wenn Sie ein vorgefertigtes Tool zum tiefen Klonen von Objekten benötigen, sehen Sie sich die Tools der Lodash- Bibliothek an.

▍ Beispiel


Lassen Sie uns eines aus zwei Objekten erstellen.

 const firstObject = { firstName: 'Robert' } const secondObject = { lastName: 'Cooper' } const combinedObject = Object.assign(firstObject, secondObject); //      combinedObjec : { firstName: 'Robert', lastName: 'Cooper' } 

Zusammenfassung


In diesem Artikel haben wir über nützliche Methoden für Arrays und Objekte in JavaScript gesprochen. Viele der hier diskutierten Methoden geben neue Arrays oder Objekte zurück. Dies ermöglicht es, sie zu Ketten zu kombinieren. Diese Methoden ändern nicht die Quelldaten, was bei der React-Entwicklung besonders wichtig ist. Darüber hinaus können Sie durch die Verwendung dieser Methoden in den allermeisten Fällen Schleifen wie for und while .

Liebe Leser! Welche Methoden für Arrays und Objekte in JavaScript verwenden Sie am häufigsten?

Source: https://habr.com/ru/post/de413169/


All Articles