文章配图:TypedArray 类型化数组

页面预览

前言

TypedArray(类型化数组)是 JavaScript/ArkTS 中操作二进制缓冲区的高效接口。相比普通 Array,TypedArray 固定元素大小、内存连续、访问速度快,适合棋盘等固定结构的数值存储。

一、TypedArray 基础

// 使用 Int8Array 表示 5×8 棋盘
const boardBuffer = new ArrayBuffer(40);  // 5×8=40 字节
const boardView = new Int8Array(boardBuffer);

// 设置位置 (2,3) 的猫咪等级
boardView[3 * 5 + 2] = CatLevel.MEDIUM;

// 读取
const level = boardView[3 * 5 + 2];

二、TypedArray 类型选择

类型元素大小取值范围适用场景
Int8Array1 字节-128~127猫咪等级(0-6)
Uint8Array1 字节0~255网格状态、标记
Int16Array2 字节-32768~32767得分、连击
Float32Array4 字节浮点数位置、动画插值

三、性能对比

操作普通 ArrayInt8Array提升
内存占用(5×8)~320 字节40 字节8x
访问速度O(1)O(1)内存连续
序列化JSON直接 buffer快速

四、游戏中的应用

// 使用 TypedArray 优化棋盘存储
class Board {
  private data: Int8Array;

  constructor() {
    this.data = new Int8Array(5 * 8);
    this.data.fill(0);  // 0 = 空
  }

  get(x: number, y: number): number {
    return this.data[y * 5 + x];
  }

  set(x: number, y: number, level: number): void {
    this.data[y * 5 + x] = level;
  }

  clear(): void {
    this.data.fill(0);
  }
}

五、最佳实践

  1. 固定数据结构用 TypedArray:棋盘、网格
  2. Int8Array 适合等级:0-6 级用 1 字节足够
  3. 配合 ArrayBuffer:序列化时直接取 buffer
  4. 避免频繁创建:复用同一个 TypedArray 实例

总结

TypedArray 提供类型化的二进制缓冲区操作,内存占用低、访问性能好,适合棋盘等固定结构的数值存储。核心要点:new Int8Array(buffer) 视图、 固定元素大小省内存、 直接 buffer 序列化

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐