// 创建一个长度为6的Int32Array
const ints2 = new Int32Array(6);
// 每个数值使用 4 字节,因此 ArrayBuffer 是 24 字节 alert(ints2.length); // 6
// 类似DataView,定型数组也有一个指向关联缓冲的引用 alert(ints2.buffer.byteLength); // 24
// 创建一个包含[2, 4, 6, 8]的Int32Array const ints3 = new Int32Array([2, 4, 6, 8]); alert(ints3.length); // 4 alert(ints3.buffer.byteLength); // 16 alert(ints3[2]); // 6
// 通过复制ints3的值创建一个Int16Array const ints4 = new Int16Array(ints3); // 这个新类型数组会分配自己的缓冲
// 对应索引的每个值会相应地转换为新格式 alert(ints4.length); // 4 alert(ints4.buffer.byteLength); // 8 alert(ints4[2]); // 6
// 基于普通数组来创建一个Int16Array
const ints5 = Int16Array.from([3, 5, 7, 9]); alert(ints5.length); // 4 alert(ints5.buffer.byteLength); // 8 alert(ints5[2]); // 7
// 基于传入的参数创建一个Float32A服务器托管网rray
const floats = Float32Array.of(3.14, 2.718, 1.618); alert(floats.length); // 3 alert(floats.buffer.byteLength); // 12 alert(floats[2]); // 1.6180000305175781
定型数组的构造函数和实例都有一个 BYTES_PER_ELEMENT 属性,返回该类型数组中每个元素的大小: alert(Int16Array.BYTES_PER_ELEMENT); // 2
alert(Int32Array.BYTES_PER_ELEMENT); // 4
const ints = new Int32Array(1),
floats = new Float64Array(1);
alert(ints.BYTES_PER_ELEMENT); // 4
alert(floats.BYTES_PER_ELEMENT); // 8
如果定型数组没有用任何值初始化,则其关联的缓冲会以 0 填充:
const ints = new Int32Array(4);
alert(ints[0]); // 0
alert(ints[1]); // 0
alert(ints[2]); // 0
alert(ints[3]); // 0
从很多方面看,定型数组与普通数组都很相似。定型数组支持如下操作符、方法和属性:
- []
- copyWithin()
- entries()
- every()
- fill()
- filter()
- find()
- findIndex()
- forEach()
- indexOf()
- join()
- keys()
- lastIndexOf()
- length
- map()
- reduce()
- reduceRight()
- reverse()
- slice()
- some()
- sort()
- toLocaleString()
- toString()
- values()
其中,返回新数组的方法也会返回包含同样元素类型(element type)的新定型数组:
const ints = new Int16Array([1, 2, 3]);
const doubleints = ints.map服务器托管网(x => 2*x);
alert(doubleints instanceof Int16Array); // true
定型数组有一个 Symbol.iterator 符号属性,因此可以通过 for..of 循环和扩展操作符来操作: 8
const ints = new Int16Array([1, 2, 3]);
for (const int of ints) {
alert(int);
}
// 1 // 2 // 3
alert(Math.max(...ints)); // 3
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 如何编写一个 Pulsar Broker Interceptor 插件
背景 之前写过一篇文章 VictoriaLogs:一款超低占用的 ElasticSearch 替代方案讲到了我们使用 Victorialogs 来存储 Pulsar 消息队列的消息 trace 信息。 而其中的关键的埋点信息是通过 Pulsar 的 Broke…