Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. TypedArray
  6. TypedArray.from()

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

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 ⁨2016年9月⁩.

TypedArray.from() メソッドは、配列風オブジェクトや反復可能オブジェクトから新しい型付き配列を生成します。このメソッドはArray.from() とほぼ同じです。

試してみましょう

const uint16 = Int16Array.from("12345");console.log(uint16);// Expected output: Int16Array [1, 2, 3, 4, 5]

構文

js
TypedArray.from(arrayLike, mapFn)TypedArray.from(arrayLike, mapFn, thisArg)

ここでTypedArray は次のいずれかです。

引数

arrayLike

型付き配列に変換する反復可能または配列風オブジェクトです。

mapFn省略可

型付き配列の各要素に対して呼び出す関数です。指定された場合、配列に追加するすべての値は最初にこの関数に渡され、代わりにmapFn の返値が型付き配列に追加されます。この関数は以下の引数で呼び出されます。

element

現在処理されている型付き配列の要素です。

index

現在処理されている型付き配列の要素のインデックスです。

thisArg省略可

mapFn を実行するときにthis として使う値です。

返値

新しいTypedArray インスタンスです。

解説

詳しくはArray.from() をご覧ください。

Array.from()TypedArray.from() の間には微妙な違いがあります(メモ: 下記で言及するthis 値はTypedArray.from() が呼び出されたthis 値であり、mapFn を呼び出すために用いたthisArg 引数ではありません)。

  • TypedArray.from() に渡されたthis の値がコンストラクターではなかった場合、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() がイテレーターではない配列風オブジェクトを受け取ったときは、穴をそのまま残します。TypedArray.from() は必ず密配列 (dense array) を生成します。

反復可能オブジェクトから (Set)

js
const s = new Set([1, 2, 3]);Uint8Array.from(s);// Uint8Array [ 1, 2, 3 ]

文字列から

js
Int16Array.from("123");// Int16Array [ 1, 2, 3 ]

アロー関数と map の使用

アロー関数をマップ関数として使用して要素を操作します。

js
Float32Array.from([1, 2, 3], (x) => x + x);// Float32Array [ 2, 4, 6 ]

数列を生成する

js
Uint8Array.from({ length: 5 }, (v, k) => k);// Uint8Array [ 0, 1, 2, 3, 4 ]

TypedArray 以外のコンストラクターに対する from() の呼び出し

from()this 値はTypedArray インスタンスを返すコンストラクターでなければなりません。

js
function NotArray(len) {  console.log("NotArray called with length", len);}Int8Array.from.call({}, []); // TypeError: #<Object> is not a constructorInt8Array.from.call(NotArray, []);// NotArray called with length 0// TypeError: Method %TypedArray%.from called on incompatible receiver #<NotArray>
js
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 ]

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-%typedarray%.from

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp