# 类型化数组

对原始二进制缓冲区的类似数组的视图。

类型化数组 API 的工作方式与 JavaScript 的非常相似 (MDN (在新窗口中打开))。下面的 TypedArray 表示元素类型为 T 的变体之一,而不是实际的类。请注意,类型化数组实际上不是泛型的,但 Uint8ArrayFloat64Array 等具体实现具有相同的接口,只是在实现的元素类型 (表示为 T) 上有所不同。

# 变体

变体 元素类型 描述
Int8Array i8 对 8 位有符号整数的视图。
Int16Array i16 对 16 位有符号整数的视图。
Int32Array i32 对 32 位有符号整数的视图。
Int64Array i64 对 64 位有符号整数的视图。
Uint8Array u8 对 8 位无符号整数的视图。
Uint8ClampedArray u8 对 8 位无符号整数的视图,
设置的值在 0255(含)之间。
Uint16Array u16 对 16 位无符号整数的视图。
Uint32Array u32 对 32 位无符号整数的视图。
Uint64Array u64 对 64 位无符号整数的视图。
Float32Array f32 对 32 位浮点数的视图。
Float64Array f64 对 64 位浮点数的视图。

# 构造函数

  • new TypedArray(length: i32)
    
    使用新的后备缓冲区构造一个新的类型化数组视图,并将所有值初始化为零。有关包装原始缓冲区的说明,请参见下面的 wrap

# 静态成员

  • const BYTES_PER_ELEMENT: usize
    

    每个元素的字节数。

  • function wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray
    

    将原始缓冲区包装为类型化数组的值类型的值序列。这等效于 JS 中的相应备用构造函数签名,但存在的原因是还没有函数重载。

# 实例成员

# 字段

  • readonly buffer: ArrayBuffer
    

    此视图的后备数组缓冲区。

  • readonly byteOffset: i32
    

    从后备缓冲区开始处的偏移量(以字节为单位)。

  • readonly byteLength: i32
    

    从后备缓冲区开始处的长度(以字节为单位)。

  • readonly length: i32
    

    元素的长度。

# 方法

  • function every(fn: (value: T, index: i32, self: TypedArray) => bool): bool
    

    使用数组的每个值调用指定函数,直到它找到第一个函数返回 false 的值。如果所有函数都返回 true 或数组为空,则返回 true,否则返回 false

  • function fill(value: T, start?: i32, end?: i32): this
    

    将数组中从 start(含)到 end(不含)的值替换为指定的值,并返回数组。

  • function findIndex(fn: (value: T, index: i32, self: TypedArray) => bool): i32
    

    使用数组的每个值调用指定函数,直到它找到第一个函数返回 true 的值,并返回其索引。如果永远不会出现这种情况,则返回 -1

  • function findLastIndex(fn: (value: T, index: i32, self: TypedArray) => bool): i32
    

    使用数组的每个值(从结尾开始)调用指定函数,直到它找到第一个函数返回 true 的值,并返回其索引。如果永远不会出现这种情况,则返回 -1

  • function forEach(fn: (value: T, index: i32, self: TypedArray) => void): void
    

    使用数组的每个值调用指定函数。

  • function includes(value: T, fromIndex?: i32): bool
    

    测试数组是否包含指定的值,可以选择提供起始索引。

  • function indexOf(value: T, fromIndex?: i32): i32
    

    获取数组中可以找到指定值的第一个索引。如果未找到,则返回 -1

  • function lastIndexOf(value: T, fromIndex?: i32): i32
    

    获取数组中可以找到指定值的最后一个索引。如果未找到,则返回 -1

  • function map(fn: (value: T, index: i32, self: TypedArray) => T): TypedArray
    

    使用数组的每个值调用指定函数,返回一个包含函数返回值的新数组。

  • function reduce<U>(
      fn: (accumValue: U, currentValue T, index: i32, self: TypedArray) => U,
      initialValue: U
    ): U
    

    使用数组的每个值调用指定 reducer 函数,生成单个返回值。相应的前一个 reducer 函数的返回值将保存在 accumValue 中,从 initialValue 开始,在过程中成为最终返回值。

  • function reduceRight<U>(
      fn: (accumValue: U, currentValue: T, index: i32, self: TypedArray) => U,
      initialValue: U
    ): U
    

    使用数组的每个值(从右到左)调用指定 reducer 函数,生成单个返回值。

  • function reverse(): this
    

    就地反转数组的值,在返回数组之前修改数组。

  • function set(source: ArrayLike<number>, offset?: i32): void
    

    设置类型化数组值(从 offset 开始,或 0),从指定的 source 数组读取输入值。

  • function some(fn: (value: T, index: i32, self: TypedArray) => bool): bool
    

    使用数组的每个值调用指定函数,直到它找到第一个函数返回 true 的值,并返回 true。否则或如果数组为空,则返回 false

  • function sort(fn: (a: T, b: T) => i32): this
    

    就地对数组的值进行排序,使用指定的比较器函数,在返回数组之前修改数组。比较器返回负值表示 a < b,正值表示 a > b,而 0 表示两者相等。与在 JavaScript 中不同的是,在 JavaScript 中会执行隐式转换为字符串,比较器默认为比较类型为 T 的两个值。

  • function subarray(start?: i32, end?: i32): TypedArray
    

    返回对数组的后备缓冲区的新的视图,从相对于此数组的 begin(含)到 end(不含)。如果省略,end 默认为数组的末尾。不复制。