在 ECMAScript 2019 中,TypedArray 对象是一个非常重要的概念。它是一种用于操作二进制数据的数组类型,可以存储各种数据类型的数据,例如整数、浮点数、布尔值等等。TypedArray 对象可以提高 JavaScript 在处理大量数据时的效率,同时也使得开发者能够更加方便地操作二进制数据。
TypedArray 对象的类型
在 ECMAScript 2019 中,一共有 9 种 TypedArray 对象类型,分别是:
- Int8Array:8 位有符号整数数组
- Uint8Array:8 位无符号整数数组
- Uint8ClampedArray:8 位无符号整数数组(溢出会被截断)
- Int16Array:16 位有符号整数数组
- Uint16Array:16 位无符号整数数组
- Int32Array:32 位有符号整数数组
- Uint32Array:32 位无符号整数数组
- Float32Array:32 位浮点数数组
- Float64Array:64 位浮点数数组
这些 TypedArray 对象类型都继承自 ArrayBuffer 对象,因此它们都有一个 buffer 属性,用于访问底层的二进制数据缓冲区。
创建 TypedArray 对象
创建 TypedArray 对象的方式有很多种,下面介绍其中的几种。
通过构造函数创建
通过构造函数创建 TypedArray 对象是最常见的方式。以 Int8Array 为例,创建一个长度为 4 的 Int8Array 对象,代码如下:
const buffer = new ArrayBuffer(4); const int8Array = new Int8Array(buffer);
这里首先创建了一个长度为 4 的 ArrayBuffer 对象,然后通过 Int8Array 构造函数创建了一个 Int8Array 对象,它使用了上面创建的 ArrayBuffer 对象作为底层数据缓冲区。
通过字节序列创建
TypedArray 对象还可以通过字节序列来创建。以 Uint8Array 为例,创建一个 Uint8Array 对象,代码如下:
const uint8Array = new Uint8Array([1, 2, 3, 4]);
这里直接使用 Uint8Array 构造函数,并传递了一个字节序列作为参数,这样就创建了一个长度为 4 的 Uint8Array 对象。注意,这里的字节序列是一个数组,数组中的每个元素都表示一个字节。
通过其他 TypedArray 对象创建
如果已经有一个 TypedArray 对象,可以通过它来创建其他类型的 TypedArray 对象。以 Int16Array 和 Int8Array 为例,创建一个长度为 2 的 Int16Array 对象,然后通过它来创建一个长度为 4 的 Int8Array 对象,代码如下:
const int16Array = new Int16Array([1, 2]); const int8Array = new Int8Array(int16Array.buffer);
这里首先创建了一个长度为 2 的 Int16Array 对象,然后通过它的 buffer 属性来创建了一个长度为 4 的 Int8Array 对象。这样创建的 Int8Array 对象使用了上面创建的 Int16Array 对象的底层数据缓冲区。
TypedArray 对象的使用
创建了 TypedArray 对象之后,就可以开始对它进行操作了。下面介绍一些常见的 TypedArray 对象操作。
获取 TypedArray 对象的长度
可以通过 length 属性来获取 TypedArray 对象的长度,例如:
const int8Array = new Int8Array([1, 2, 3, 4]); console.log(int8Array.length); // 输出 4
获取 TypedArray 对象中的元素
可以通过下标来获取 TypedArray 对象中的元素,下标从 0 开始计数,例如:
const int8Array = new Int8Array([1, 2, 3, 4]); console.log(int8Array[0]); // 输出 1 console.log(int8Array[1]); // 输出 2 console.log(int8Array[2]); // 输出 3 console.log(int8Array[3]); // 输出 4
设置 TypedArray 对象中的元素
可以通过下标来设置 TypedArray 对象中的元素,例如:
const int8Array = new Int8Array([1, 2, 3, 4]); int8Array[0] = 5; int8Array[1] = 6; int8Array[2] = 7; int8Array[3] = 8; console.log(int8Array); // 输出 [5, 6, 7, 8]
TypedArray 对象的迭代
可以使用 for 循环来迭代 TypedArray 对象中的元素,例如:
const int8Array = new Int8Array([1, 2, 3, 4]); for (let i = 0; i < int8Array.length; i++) { console.log(int8Array[i]); }
TypedArray 对象的切片
可以使用 slice 方法来对 TypedArray 对象进行切片,例如:
const int8Array1 = new Int8Array([1, 2, 3, 4]); const int8Array2 = int8Array1.slice(1, 3); console.log(int8Array2); // 输出 [2, 3]
这里的 slice 方法是从下标 1 开始,取 3 - 1 = 2 个元素。
总结
在 ECMAScript 2019 中,TypedArray 对象是一个非常重要的概念,它可以用于操作二进制数据,提高 JavaScript 在处理大量数据时的效率。本文介绍了 TypedArray 对象的类型、创建方式以及常见的操作方法,希望能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65751befd2f5e1655de3e820