TypedArray.from()
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна в браузерах с сентября 2016 года.
Статический метод TypedArray.from() создаёт новый типизированный массив из массивоподобного или итерируемого объекта. Этот метод почти идентичен Array.from().
Попробуйте
const uint16 = Int16Array.from("12345");
console.log(uint16);
// Expected output: Int16Array [1, 2, 3, 4, 5]
Синтаксис
TypedArray.from(arrayLike, mapFn) TypedArray.from(arrayLike, mapFn, thisArg)
Где TypedArray — это один из следующих вариантов:
Int8ArrayUint8ArrayUint8ClampedArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayFloat16ArrayFloat32ArrayFloat64ArrayBigInt64ArrayBigUint64Array
Параметры
-
arrayLike - Итерируемый или массивоподобный объект для преобразования в типизированный массив.
-
mapFnНеобязательно - Функция, вызываемая для каждого элемента типизированного массива. Если она предоставлена, каждое значение, добавляемое в массив, сначала передаётся через эту функцию, и вместо него в типизированный массив добавляется возвращаемое значение
mapFn. Функция вызывается со следующими аргументами:-
element - Текущий обрабатываемый элемент в типизированном массиве.
-
index - Индекс текущего обрабатываемого элемента в типизированном массиве.
-
-
thisArgНеобязательно - Значение, используемое в качестве
thisпри выполненииmapFn.
Возвращаемое значение
Новый экземпляр TypedArray.
Описание
Подробнее смотрите в Array.from().
Существуют некоторые тонкие различия между Array.from() и TypedArray.from() (примечание: значение this, упомянутое ниже, — это значение this, с которым был вызван TypedArray.from(), а не аргумент thisArg, используемый для вызова mapFn):
- Если значение
thisдляTypedArray.from()не является конструктором,TypedArray.from()выброситTypeError, тогда какArray.from()по умолчанию создаёт новыйArray. - Объект, созданный
this, должен быть экземпляромTypedArray, тогда какArray.from()позволяет конструировать его значениеthisкак любой объект. - Когда параметр
sourceявляется итератором,TypedArray.from()сначала собирает все значения из итератора, затем создаёт экземплярthis, используя количество элементов, и, наконец, устанавливает значения в экземпляре.Array.from()устанавливает каждое значение по мере его получения от итератора, а затем устанавливает егоlengthв конце. -
TypedArray.from()использует[[Set]], в то время какArray.from()использует[[DefineOwnProperty]]. Следовательно, при работе с объектамиProxyон вызываетhandler.set()для создания новых элементов, а неhandler.defineProperty(). - Когда
Array.from()получает массивоподобный объект, который не является итератором, он учитывает пропуски (holes).TypedArray.from()гарантирует, что результат будет плотным (dense).
Примеры
Из итерируемого объекта (Set)
const s = new Set([1, 2, 3]); Uint8Array.from(s); // Uint8Array [ 1, 2, 3 ]
Из строки
Int16Array.from("123");
// Int16Array [ 1, 2, 3 ]
Использование со стрелочной функцией и map
Использование стрелочной функции в качестве функции отображения (map function) для управления элементами
Float32Array.from([1, 2, 3], (x) => x + x); // Float32Array [ 2, 4, 6 ]
Генерация последовательности чисел
Uint8Array.from({ length: 5 }, (v, k) => k);
// Uint8Array [ 0, 1, 2, 3, 4 ]
Вызов from() на конструкторах, не являющихся TypedArray
Значение this для from() должно быть конструктором, который возвращает экземпляр TypedArray.
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 ]
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
from |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
См. также
- Полифил
TypedArray.fromвcore-js - Руководство по типизированным массивам JavaScript
TypedArrayTypedArray.of()TypedArray.prototype.map()Array.from()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from