ES7 为 TypedArray 带来了两个新的类型:BigInt64Array 和 BigUint64Array。这两个类型分别支持有符号的 64 位整数和无符号的 64 位整数。在这篇文章中,我们将详细了解这两个类型的新特性以及它们的用途和限制。
TypedArray
首先,让我们回顾一下 TypedArray 是什么。TypedArray 是 JavaScript 中的一种多维数组,它可以存储均一类型的数据。它能够有效地处理大量数据,因为它们只在内存中存储一次,并且可以使用底层二进制数据类型进行高效的操作。此外,TypedArray 还提供了很多方便的方法来访问和操作数据,例如 sort() 和 slice()。
以下是 TypedArray 支持的类型:
- Int8Array
- Uint8Array
- Uint8ClampedArray
- Int16Array
- Uint16Array
- Int32Array
- Uint32Array
- Float32Array
- Float64Array
BigInt64Array 和 BigUint64Array
BigInt64Array 和 BigUint64Array 是 ES7 新增的 TypedArray 类型。它们是有符号和无符号的 64 位整数数组类型,用于处理大型整数或位操作。
BigInt64Array 和 BigUint64Array 的创建方式和其他 TypedArray 类型相同。例如,以下是创建一个长度为 3 的 BigInt64Array 的代码:
let bigInt64Array = new BigInt64Array(3);
我们可以使用以下方法访问和操作 BigInt64Array 和 BigUint64Array:
- set() 用于将一个 TypedArray 中的数据复制到当前 TypedArray 中。
- slice() 用于从当前 TypedArray 中返回一个新的 TypedArray。
- subarray() 用于从当前 TypedArray 中返回一个包括从开始索引到结束索引之间的新的 TypedArray。
let bigInt64Array1 = new BigInt64Array([1n, 2n, 3n]); let bigInt64Array2 = new BigInt64Array(3); bigInt64Array2.set(bigInt64Array1); let bigInt64Array3 = bigInt64Array2.slice(0, 2);
BigInt64Array 和 BigUint64Array 还支持以下属性:
- length:返回 TypedArray 中元素的数量。
- BYTES_PER_ELEMENT:返回 TypedArray 中每个元素占用的字节数。
console.log(BigInt64Array.BYTES_PER_ELEMENT); // 输出 8,因为每个元素占用 8 个字节 let bigInt64Array = new BigInt64Array(3); console.log(bigInt64Array.length); // 输出 3
示例代码
下面是一个简单的例子,它演示了如何使用 BigInt64Array 和 BigUint64Array 来处理大型整数。
let bigInt64Array = new BigInt64Array([1000000000000000000n, 999999999999999999n, -1000000000000000000n]); let sum = 0n; for (let i = 0; i < bigInt64Array.length; i++) { sum += bigInt64Array[i]; } console.log(sum); // 输出 0n,因为前两个整数的总和等于后一个整数的值
总结
ES7 的 BigInt64Array 和 BigUint64Array 提供了一种新的方法来处理大型整数和位操作。这些新类型和其他 TypedArray 类型的使用方式相同,但提供了更大的数值范围和更强的位操作能力。虽然这些新类型很有用,但是它们仅在支持 ES7 的浏览器中才可用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651c455595b1f8cacd3d0477