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
TypedArray
aus einem array-ähnlichen oder iterierbaren Objekt. Diese Methode ist nahezu 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)
Wo TypedArray
eines der folgenden ist:
Parameter
arrayLike
-
Ein iterierbares oder array-ähnliches Objekt, das in ein TypedArray umgewandelt werden soll.
mapFn
Optional-
Eine Funktion, die auf jedes Element des TypedArray angewendet wird. Wenn bereitgestellt, wird jeder Wert, der dem Array hinzugefügt werden soll, zunächst durch diese Funktion geleitet, und der Rückgabewert von
mapFn
wird stattdessen dem TypedArray hinzugefügt. Die Funktion wird mit den folgenden Argumenten aufgerufen: thisArg
Optional-
Wert, der als
this
verwendet wird, wennmapFn
ausgeführt wird.
Rückgabewert
Eine neue TypedArray
-Instanz.
Beschreibung
Siehe Array.from()
für weitere Details.
Es gibt einige subtile Unterschiede zwischen Array.from()
und TypedArray.from()
(Hinweis: Der unten erwähnte this
-Wert ist der this
-Wert, auf den TypedArray.from()
aufgerufen wurde, nicht das thisArg
-Argument, das zur Ausführung von mapFn
verwendet wird):
- 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 jedem Objekt konstruiert wird. - Wenn der
source
-Parameter ein Iterator ist, sammeltTypedArray.from()
zunächst alle Werte aus dem Iterator, erstellt dann eine Instanz vonthis
mit der Anzahl und setzt schließlich die Werte auf die Instanz.Array.from()
setzt jeden Wert, wie er aus dem Iterator empfangen wird, und setzt anschließend seinelength
. TypedArray.from()
verwendet[[Set]]
, währendArray.from()
[[DefineOwnProperty]]
verwendet. Daher wird beim Arbeiten mitProxy
Objektenhandler.set()
aufgerufen, um neue Elemente zu erstellen, anstelle vonhandler.defineProperty()
.- Wenn
Array.from()
ein array-ähnliches Objekt erhält, das kein Iterator ist, werden Lücken beibehalten.TypedArray.from()
stellt sicher, dass das Ergebnis dicht ist.
Beispiele
Von einem iterierbaren Objekt (Set)
const s = new Set([1, 2, 3]);
Uint8Array.from(s);
// Uint8Array [ 1, 2, 3 ]
Von einem String
Int16Array.from("123");
// Int16Array [ 1, 2, 3 ]
Verwendung mit Arrow-Funktion und Map
Verwendung einer Arrow-Funktion als Map-Funktion zur Bearbeitung der Elemente
Float32Array.from([1, 2, 3], (x) => x + x);
// Float32Array [ 2, 4, 6 ]
Generieren einer Zahlenfolge
Uint8Array.from({ length: 5 }, (v, k) => k);
// Uint8Array [ 0, 1, 2, 3, 4 ]
Aufruf von from() bei 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 |