# 定义

Float32Array 是 JavaScript 中一种用于处理 32 位浮点数的类型化数组(typed array)。它提供了一种高效的方式来处理二进制数据,尤其在 WebGL 或其他需要对大量数值进行快速处理的应用中,Float32Array 非常有用。

# 基本用法

  • Float32Array 可以用来存储和操作浮点数数组,每个元素都是 32 位浮点数(与 IEEE 754 标准兼容)。
  • 它的使用方式类似于普通数组,但操作更接近底层,适合在性能敏感的场景下使用。

# 创建方式

有多种方式可以创建 Float32Array 对象:

  • 通过长度创建空数组
let arr = new Float32Array(10); // 创建一个长度为 10 的数组,初始值全为 0
  • 通过普通数组初始化
let arr = new Float32Array([1.0, 2.5, 3.75]); // 创建并初始化一个 Float32Array
  • 通过另一种类型化数组初始化
let intArray = new Int16Array([10, 20, 30]);
let floatArray = new Float32Array(intArray); // 将 Int16Array 转换为 Float32Array
  • 通过 ArrayBuffer 创建
let buffer = new ArrayBuffer(16); // 创建一个 16 字节的缓冲区
let floatArray = new Float32Array(buffer); // 在该缓冲区上创建一个 Float32Array 视图

# 操作 Float32Array

  • 访问元素:通过索引访问和修改元素
let arr = new Float32Array([1.0, 2.5, 3.75]);
console.log(arr[0]); // 输出: 1.0
arr[1] = 4.5; // 修改第二个元素
console.log(arr[1]); // 输出: 4.5
  • 长度:可以使用 length 属性获取数组的长度
console.log(arr.length); // 输出: 3
  • 方法:Float32Array 支持类似于普通数组的很多方法,如 slice、subarray、map、forEach 等
let subArray = arr.subarray(1, 3); // 提取子数组
console.log(subArray); // 输出: Float32Array [4.5, 3.75]

# 用途

  • WebGL:在 WebGL 编程中,Float32Array 常用于传递顶点数据、颜色数据等,因为 WebGL 需要将这些数据作为二进制缓冲区传递到 GPU。
  • 音频处理:处理音频信号的数据流。
  • 科学计算和数据分析:当需要处理大量浮点数时,Float32Array 提供了内存效率和速度优势。

# 性能

  • Float32Array 提供了与普通 JavaScript 数组类似的接口,但其内部是直接操作二进制数据的,性能上有明显优势,尤其是在大量数值计算的场景下。

refs:MDN