TypedArray.from()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Die TypedArray.from()
statische Methode erstellt ein neues
getyptes Array
aus einem array-ähnlichen oder iterierbaren Objekt. Diese Methode ist fast identisch mit
Array.from()
.
Probieren Sie es aus
const uint16 = Int16Array.from("12345");
console.log(uint16);
// Expected output: Int16Array [1, 2, 3, 4, 5]
Syntax
TypedArray.from(arrayLike, mapFn)
TypedArray.from(arrayLike, mapFn, thisArg)
Dabei ist TypedArray
eines von:
Parameter
arrayLike
-
Ein iterierbares oder array-ähnliches Objekt, das in ein getyptes Array umgewandelt werden soll.
mapFn
Optional-
Eine Funktion, die für jedes Element des getypten Arrays aufgerufen wird. Wenn bereitgestellt, wird jeder Wert, der zum Array hinzugefügt werden soll, zuerst durch diese Funktion gefiltert, und der Rückgabewert von
mapFn
wird stattdessen zum getypten Array hinzugefügt. Die Funktion wird mit den folgenden Argumenten aufgerufen: thisArg
Optional-
Wert, der als
this
beim Ausführen vonmapFn
verwendet wird.
Rückgabewert
Eine neue TypedArray
Instanz.
Beschreibung
Siehe Array.from()
für mehr Details.
Es gibt einige subtile Unterschiede zwischen Array.from()
und TypedArray.from()
(Hinweis: Der this
-Wert, der im Folgenden erwähnt wird, ist der this
-Wert, mit dem TypedArray.from()
aufgerufen wurde, nicht das thisArg
-Argument, das verwendet wird, um mapFn
zu rufen):
- Wenn der
this
-Wert vonTypedArray.from()
kein Konstruktor ist, wirftTypedArray.from()
einenTypeError
, währendArray.from()
standardmäßig ein neuesArray
erstellt. - Das durch
this
konstruierte Objekt muss eineTypedArray
Instanz sein, währendArray.from()
erlaubt, dass seinthis
-Wert zu einem beliebigen Objekt konstruiert wird. - Wenn der
source
-Parameter ein Iterator ist, sammeltTypedArray.from()
zuerst alle Werte aus dem Iterator, erstellt dann eine Instanz vonthis
unter Verwendung der Anzahl, und setzt schließlich die Werte auf der Instanz.Array.from()
setzt jeden Wert, sobald er vom Iterator empfangen wird, und setzt dann seinelength
am Ende. TypedArray.from()
verwendet[[Set]]
, währendArray.from()
[[DefineOwnProperty]]
verwendet. Daher ruft es beim Arbeiten mitProxy
-Objektenhandler.set()
auf, um neue Elemente zu erstellen, anstatthandler.defineProperty()
.- Wenn
Array.from()
ein array-ähnliches Objekt erhält, das kein Iterator ist, respektiert es Löcher.TypedArray.from()
sorgt dafür, dass das Ergebnis dicht ist.
Beispiele
Aus einem iterierbaren Objekt (Set)
const s = new Set([1, 2, 3]);
Uint8Array.from(s);
// Uint8Array [ 1, 2, 3 ]
Aus einem String
Int16Array.from("123");
// Int16Array [ 1, 2, 3 ]
Verwendung mit Pfeilfunktion und Karte
Verwendung einer Pfeilfunktion als Abbildungsfunktion, um die Elemente zu manipulieren
Float32Array.from([1, 2, 3], (x) => x + x);
// Float32Array [ 2, 4, 6 ]
Eine Zahlenfolge erzeugen
Uint8Array.from({ length: 5 }, (v, k) => k);
// Uint8Array [ 0, 1, 2, 3, 4 ]
Aufrufen von from() auf Nicht-TypedArray-Konstruktoren
Der this
-Wert von from()
muss ein Konstruktor sein, der eine TypedArray
Instanz zurückgibt.
function NotArray(len) {
console.log("NotArray called with length", len);
}
Int8Array.from.call({}, []); // TypeError: #<Object> is not a constructor
Int8Array.from.call(NotArray, []);
// NotArray called with length 0
// TypeError: Method %TypedArray%.from called on incompatible receiver #<NotArray>
function NotArray2(len) {
console.log("NotArray2 called with length", len);
return new Uint8Array(len);
}
console.log(Int8Array.from.call(NotArray2, [1, 2, 3]));
// NotArray2 called with length 3
// Uint8Array(3) [ 1, 2, 3 ]
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-%typedarray%.from |