ES10 类型数组(TypedArray)详解

阅读时长 7 分钟读完

在 Web 前端开发中,JavaScript 是最常用的编程语言之一,而在 JavaScript 中,数据类型的处理一直是一个重要的问题。ES6 引入了一些新的类型(如 Set、Map 等),ES10 又新增了 TypedArray,它能够有效地处理数组数据。本文将详细介绍 ES10 的 TypedArray。

TypedArray 简介

TypedArray 是一个类型化数组,它可以存储特定的二进制类型数据,如 Uint8Array、Float64Array、Int16Array 等等。与普通的 JavaScript 数组不同,TypedArray 的元素是固定的,每个元素占用的字节数也是确定的,因此它更高效、更安全。

TypedArray 常见类型

在 ES10 中,TypedArray 一共有 9 种类型,它们的区别在于存储的二进制数据类型不同,具体如下:

  • Int8Array: 8 位有符号整数。
  • Uint8Array: 8 位无符号整数。
  • Uint8ClampedArray: 8 位无符号整数,但是溢出会被截断至 0 或 255。
  • Int16Array: 16 位有符号整数。
  • Uint16Array: 16 位无符号整数。
  • Int32Array: 32 位有符号整数。
  • Uint32Array: 32 位无符号整数。
  • Float32Array: 32 位浮点数。
  • Float64Array: 64 位浮点数。

TypedArray 用法

TypedArray 的用法类似于普通数组,可以使用下标访问其中的元素,也可以使用数组的一些方法,如 push、unshift、slice 等。但是,与普通数组不同的是,TypedArray 在创建时必须指定数组的长度,数组的元素类型也是固定的。

创建 TypedArray

创建 TypedArray 最常用的方法是使用构造函数:

如果你已经有了一个普通数组,也可以使用 TypedArray.from 方法来将其转化为 TypedArray:

访问 TypedArray

TypedArray 的访问方式与普通数组一致,可以使用下标访问其中的元素。

此外,TypedArray 也支持 forEach、reduce、map 等数组方法。

TypeArray 与 ArrayBuffer

在 TypedArray 中,最常用于存储和处理数据的是 ArrayBuffer 类型。ArrayBuffer 的实例表示一段内存区域,它不能直接存储数据,必须通过 TypedArray 类型的对象来操作。

下面是一个创建 ArrayBuffer 的例子:

数组缓冲区的大小在创建时一定要指定,否则无法进行操作。使用构造函数的参数为缓冲区大小(以字节为单位),上例创建的缓冲区大小为 8 字节。

在 ArrayBuffer 基础上,我们可以使用视图来读取或者写入数据。一个 DataView 视图或者一个 TypedArray 视图必须引用该缓冲区,并且以特定类型格式化其二进制数据。如:

这样,我们就可以通过 arr 对 ArrayBuffer 进行读写操作了。

常见操作

slice

TypedArray 中也有 slice 方法,用法和普通数组的 slice 是一致的:

map

使用 map 方法时,TypedArray 会返回一个新的 TypedArray。如下例,我们将 int8 类型的 TypedArray 转换成了 int16 类型的 TypedArray:

forEach 和 reduce

与普通数组一样,TypedArray 也支持 forEach 和 reduce 方法。

-- -------------------- ---- -------
----- - - --- ---------------- --- --- -----
------------------------- ------ ------ -
  ------------------ -------
---
-- -----
-- -- -
-- -- -
-- -- -
-- -- -

----- - - --- ------------- -- -- -- ----
----- --- - ----------------------- ----- ------ ------ -
  ------ ---- - -----
---
----------------- -- --

TypedArray 的各种应用

TypedArray 的使用可以进一步增强 Web 前端开发的功能,如数组合并、像素处理、身份验证等等。接下来,我们以图像处理为例,演示 TypedArray 的应用。

图像处理

在前端 Web 开发中,图像处理是非常常见的需求。使用 TypedArray,我们可以很方便地对图像进行处理。以将图片进行反色处理为例,我们首先需要使用 canvas 将图片绘制出来,然后再利用 TypedArray 将图片的数据读出,进行处理封装,再将处理后的数据写入到 canvas 中。

-- -------------------- ---- -------
-- ------ ------
----- ------ - ---------------------------------
----- --- - ------------------------
-------------------- -- -- ------ --------
 
----- --------- - ------------------- -- ------ --------
----- ---- - ---------------
----- --- - ------------
----- ---- - --
 
-- -----------
--- ---- - - -- - - ---- - -- ----- -
  ------- - --- - --------
  --------- - --- - ----------
  --------- - --- - ----------
-
 
-- ------------
--------------------------- -- ---

本文总结

本文主要介绍了 ES10 中的 TypedArray,包括 TypedArray 的作用、常见类型及应用等内容。我们可以看到,TypedArray 对于 JavaScript 中的数组处理和 Web 开发中的图像处理等方面有着很好的指导意义。因此,对于学习和掌握 TypedArray,对于我们提升 Web 前端开发的技能和水平,都具有很大的帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f7857af6b2d6eab3fe0828

纠错
反馈