Dieser Artikel stellt Ihnen hauptsächlich einige Methoden zum Konvertieren von JS von Nicht-Array-Objekten in Arrays vor, nämlich Array.prototype.slice.call(obj), Array.from(obj), […obj] und Object.values( obj) und andere Methoden, Freunde in Not können sich darauf beziehen, ich hoffe, es kann jedem helfen.
Array.prototype.slice.call(obj)
Diese Methode kann ein Array-ähnliches Objekt in ein Array konvertieren, die sogenannte Klasse Ein Array-Objekt ist ein Objekt, das Längen- und Indexattribute enthält
Die Länge des zurückgegebenen Arrays hängt vom Wert des Längenattributs des Objekts und vom Wert des Nicht-Indexattributs ab. oder der Wert mit einem Index, der größer als die Länge ist, wird nicht an das Array zurückgegeben
Der eigentliche Hammer lautet wie folgt
let obj = { '0': 3, '1': 13, '2': 23, '3': 33, 'length': 3, 'name': 330 } let arr = Array.prototype.slice.call(obj) // [3, 13, 23]
Kurze Schreibweise [].slice.call(obj)
Array.from(obj)
Diese Methode kann Array-ähnliche Objekte und iterierbare Objekte in Arrays konvertieren
Array-ähnliche Objekte haben wurde oben erwähnt. Was sind iterierbare Objekte?
Array, Set, Map und String sind alle iterierbare Objekte (WeakMap/WeakSet sind keine iterierbaren Objekte)
String-Variable Wurde zu einem iterierbaren Objekt , Lösung des Codierungsproblems
Diese Objekte haben Standarditeratoren, das heißt, sie haben das Symbol.iterator-Attribut
Sie können das for verwenden der Schleife
Alle durch Generatoren erstellten Iteratoren sind iterierbare Objekte
document.getElementsByTagName("p")
Das zurückgegebene ist ein iterierbares Objekt, aber kein ArrayArray.isArray(document.getElementsByTagName('p'))
gibt false zurück
Iterierbares Objekt über Generator erstellen
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } function *createIterator(obj){ for(let value in obj){ yield obj[value] } } let iterator = createIterator(obj) let arr = Array.from(iterator) // [3, 13, 23, 33]
Transformieren Sie das Objekt selbst, um es zu einem iterierbaren Objekt zu machen
Standardmäßig sind die vom Entwickler definierten Objekte nicht iterierbare Objekte, aber wenn Sie dem Attribut Symbol.iterator
einen Generator hinzufügen, können Sie es iterierbar machen
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } obj[Symbol.iterator] = function* () { for(let value in this){ yield this[value] } } let arr = Array.from(obj) // [3, 13, 23, 33]
Methode zur Bestimmung, ob ein Objekt ein iterierbares Objekt ist
typeof obj[Symbol.iterator] === 'function'
Eine kleine Erweiterung von for of und forEach und for in
for of wird zum Schleifen iterierbarer Objekte verwendet, einschließlich Array, Set, Map, String
und Array, Set und Map verfügen alle über die forEach-Methode
Darüber hinaus ist NodeList kein Array, Set oder Map, sondern ein iterierbares Objekt, das mit for of durchlaufen werden kann
Außerdem kann es bei Verwendung von for of zum Schleifen von Objekten vorzeitig durch break beendet werden, aber forEach kann nicht herausspringen der Schleife im Voraus.
for in durchläuft die aufzählbaren Eigenschaften des Objekts, einschließlich der Eigenschaften in seiner Prototypenkette, und die Reihenfolge ist nicht garantiert
Um die aufzählbaren Eigenschaften des Objekts selbst zu durchlaufen , verwenden Sie die hasOwnProperty()
-Methode. Um zu bestimmen, ob das Attribut das eigene Attribut des Objekts ist
Object.getOwnPropertyNames(obj)
, geben Sie das aufzählbare oder nicht aufzählbare Attribut des Objekts selbst zurück
Wie auch immer, wir haben es geschafft zu weit, also gehen wir noch etwas weiter: Object.assign()
Methode kopiert die Werte aller aufzählbaren Eigenschaften von einem oder mehreren Quellobjekten zum Zielobjekt
[…obj]
Der Spread-Operator kann ein iterierbares Objekt in ein Array konvertieren
Beispielsweise gibt [...'obj']
["o", "b", "j"]
String-Deduplizierung < zurück 🎜>
[...new Set('objobj')]
Object.values(obj)
gibt eine Sammlung aufzählbarer Eigenschaftswerte des Objekts selbst zurück Object.values(obj)
let obj = { '0': 3, '1': 13, '2': 23, '3': 33 } let arr = Object.values(obj) // [3, 13, 23, 33]
Die Beziehung zwischen Zeichenfolgen und Arrays
/ concat()
/ indexOf()
/ includes()
Methoden slice()
-Methode, die eine bestimmte Anzahl von String-Kopien erstellt. repeat()
Das obige ist der detaillierte Inhalt vonJS-Methode zum Konvertieren von Nicht-Array-Objekten in Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!