📜  JavaScript | typedArray.subarray() 与示例(1)

📅  最后修改于: 2023-12-03 15:16:08.286000             🧑  作者: Mango

JavaScript | typedArray.subarray()

简介

typedArray.subarray() 是 JavaScript TypedArray 对象的一个方法,用于创建并返回一个原始 TypedArray 的新视图。该方法不会修改原始 TypedArray 的数据,而是返回一个指向相同底层数据的新的 TypedArray 对象,只是依据给定的开始索引和结束索引来定义新 TypedArray 的范围。

语法
typedArray.subarray(start[, end])
  • start: 必须参数,表示新视图开始元素的索引,开始索引是包含在新视图中的。
  • end: 可选参数,表示新视图结束元素的索引,结束索引是不包含在新视图中的。
示例
const buffer = new ArrayBuffer(16);
const view = new Uint32Array(buffer);

for (let i = 0; i < view.length; i++) {
  view[i] = i + 1;
}

const subView = view.subarray(2, 4);

console.log(subView); // Uint32Array [ 3, 4 ]
解释

上述示例中,首先创建了一个长度为 16 的 ArrayBuffer,然后使用 new Uint32Array(buffer) 创建了一个包含了 4 个 32 位无符号整数的 TypedArray 对象 view。使用一个循环,将 view 中的值设置为 1-4。

接下来,使用 subarray() 方法将 view 中索引 2-4 的元素(不包含索引 4)截取并创建一个新的 TypedArray subView。最后,使用 console.log() 打印 subView,显示结果为 [ 3, 4 ]

注意事项
  • subarray() 方法返回的是原始 TypedArray 对象的一个新视图,即它们共享同一片底层数据。
  • 新视图的起始索引是包含在新视图中的,但结束索引是不包含在新视图中的,即 [start, end) 的半开半闭区间。
  • 修改新视图会影响到原始 TypedArray 的数据,因为它们共享同一片底层数据。
  • 所有 JavaScript TypedArray 对象(如 Uint8ArrayInt16ArrayFloat32Array 等)都支持 subarray() 方法。

请注意,上述代码片段在Markdown中使用了三个反引号(```)来表示代码块,以便正确格式化代码。