Spec-Zone.ru › JavaScript

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 — это один из следующих вариантов:

  • Int8Array
  • Uint8Array
  • Uint8ClampedArray
  • Int16Array
  • Uint16Array
  • Int32Array
  • Uint32Array
  • Float16Array
  • Float32Array
  • Float64Array
  • BigInt64Array
  • BigUint64Array

Параметры

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 ]

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-%typedarray%.from

Совместимость с браузерами

Настольные Мобильные Серверные
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
  • TypedArray
  • TypedArray.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API