[Go to site: main page, start]

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

View in English Always switch to English

TypedArray.prototype.length

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

lengthTypedArray インスタンスのアクセサープロパティで、型付き配列の長さを(要素数で)返します。

試してみましょう

// ArrayBuffer をバイト単位のサイズで作成
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer, 2);

console.log(uint8.length);
// 予想される結果: 6

解説

length プロパティは set アクセサープロパティが undefined であるアクセサープロパティです。これは、このプロパティが読み取り専用であることを意味します。型付き配列が長さ追跡の場合、その長さは基盤となるバッファーの長さに依存し、バッファのサイズ変更時に変化することがあります。そうでない場合、値は型付き配列が構築された時点で確定し、変更できません。長さ追跡の有無にかかわらず、基盤となるバッファーのサイズ変更により表示範囲が有効できなくなった場合、length は 0 になります。

length プロパティの使用

js
const buffer = new ArrayBuffer(8);

const uint8 = new Uint8Array(buffer);
uint8.length; // 8 (バッファーの長さと一致)

const uint8newLength = new Uint8Array(buffer, 1, 5);
uint8newLength.length; // 5 (Uint8Array の構築の際に指定された通り)

const uint8offset = new Uint8Array(buffer, 2);
uint8.length; // 6 (構築された Uint8Array のオフセットによる)

const buffer2 = new ArrayBuffer(16, { maxByteLength: 32 });
const uint8lengthTracking = new Uint8Array(buffer2, 4);
uint8lengthTracking.length; // 12 (16 - 4)
buffer2.resize(20);
uint8lengthTracking.length; // 16 (20 - 4)
buffer2.resize(3);
uint8lengthTracking.length; // 0 (ビュー範囲が有効ではなくなった)

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-get-%typedarray%.prototype.length

ブラウザーの互換性

関連情報