Heim  >  Artikel  >  Web-Frontend  >  Verwendung von Array.from in JavaScript ES6

Verwendung von Array.from in JavaScript ES6

黄舟
黄舟Original
2017-08-23 13:27:402011Durchsuche

ES6 fügt die from-Funktion zu Array hinzu, um andere Objekte in Arrays umzuwandeln.

Natürlich haben auch andere Objekte Anforderungen und nicht alle können in Arrays umgewandelt werden.

1. Stellen Sie Objekte mit der Iterator-Schnittstelle bereit, z. B. Set, Map, Array.

2. Was ist ein Array-ähnliches Objekt? Das bedeutet, dass ein Objekt ein Längenattribut haben muss.

Karte konvertieren

Konvertieren Sie die Schlüssel-Wert-Paare des Map-Objekts in ein eindimensionales Array.

Tatsächlich ist die Reihenfolge der konvertierten Array-Elemente Schlüssel1, Wert1, Schlüssel2, Wert2, Schlüssel3, Wert3 ....

const map1 = new Map();
map1.set('k1', 1);
map1.set('k2', 2);
map1.set('k3', 3);
console.log('%s', Array.from(map1))

Ergebnis:

k1,1,k2,2,k3,3

Satz konvertieren

Konvertieren Sie die Elemente des Set-Objekts in ein Array.

const set1 = new Set();
set1.add(1).add(2).add(3)
console.log('%s', Array.from(set1))

Ergebnis

1,2,3

Zeichenfolge konvertieren

Sie können die ASCII-Zeichenfolge auch in ein Datenpaket zerlegen Zerlegen Sie Unicode-Zeichenfolgen genau in Arrays.

console.log('%s', Array.from('hello world'))
console.log('%s', Array.from('\u767d\u8272\u7684\u6d77'))

Ergebnis:

h,e,l,l,o, ,w,o,r,l,d
白,色,的,海

Array-ähnliches Objekt

Ein Array-ähnliches Objekt muss eine Länge haben , Ihre Elementattributnamen müssen numerische Werte oder Zeichen sein, die in numerische Werte konvertiert werden können.

Hinweis: Der Attributname stellt die Indexnummer des Arrays dar. Wenn keine solche Indexnummer vorhanden ist, ist das entsprechende Element im übertragenen Array leer.

console.log('%s', Array.from({  0: '0',  1: '1',  3: '3',
  length:4}))

Ergebnis:

0,1,,3

Wenn das Objekt nicht über das Längenattribut verfügt, wird es in ein leeres Array umgewandelt.

console.log('%s', Array.from({  0: 0,  1: 1}))

Das Ergebnis ist ein leeres Array.

Wenn der Attributname des Objekts nicht in eine Indexnummer umgewandelt werden kann.

console.log('%s', Array.from({
  a: '1',
  b: '2',
  length:2}))

Das Ergebnis ist auch ein leeres Array

Array.from kann drei Parameter akzeptieren

Schauen wir uns an die Definition:

Array.from(arrayLike[, mapFn[, thisArg]])

arrayLike: das konvertierte Objekt.

mapFn: Kartenfunktion.

thisArg: das Objekt, auf das this in der Map-Funktion zeigt.

Der zweite Parameter, die Kartenfunktion

, wird zur Verarbeitung jedes Elements in der Konvertierung verwendet, und das verarbeitete Ergebnis wird als Elementwert verwendet ​​des Ergebnisarrays.

console.log('%s', Array.from([1, 2, 3, 4, 5], (n) => n + 1))

Ergebnis:

Die obige Kartenfunktion fügt tatsächlich 1 zu jedem Wert im Array hinzu.

2,3,4,5,6

Der dritte Parameter, das Objekt, auf das dies in der Kartenfunktion zeigt

Dieser Parameter ist sehr nützlich, wir können Das Verarbeitete Daten und Verarbeitungsobjekte werden getrennt und verschiedene Datenverarbeitungsmethoden werden in verschiedene Objekte gekapselt. Die Verarbeitungsmethoden verwenden denselben Namen.

Wenn Array.from zum Konvertieren des Datenobjekts aufgerufen wird, können je nach tatsächlicher Situation unterschiedliche Verarbeitungsobjekte injiziert werden, um unterschiedliche Ergebnisse zu erzielen, was zur Entkopplung geeignet ist.

Bei diesem Ansatz handelt es sich um die Anwendung eines Vorlagenentwurfsmusters, das der Abhängigkeitsinjektion etwas ähnelt.

let diObj = n + 2'%s'1, 2, 3, 4, 5

Ergebnis:

3,4,5,6,7

Das obige ist der detaillierte Inhalt vonVerwendung von Array.from in JavaScript ES6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn