01.类型化数组

说明

数组是可以容纳很多不同元素的JavaScript对象。

var complexArr = [1,5,"2","Word",{"name":"James"}];

基本上在后台发生的情况是,您的浏览器将自动为该数组提供适当的内存空间。如果您添加或删除数据,它也将根据需要进行更改。

然而,在高性能和不同元素类型的世界中,有时您需要更具体地指出数组的内存量。

类型化数组 是这个问题的答案。您现在可以说出要给出数组的内存多少。以下是可用数组的不同类型的基本概述,该数组中每个元素的大小(以字节为单位)。

类型每个元素大小(以字节为单位)
Int8Array1
Uint8Array1
Uint8ClampedArray1
Int16Array2
Uint16Array2
Int32Array4
Uint32Array4
Float32Array4
Float64Array8

创建这些数组有两种方法。一种方法是直接创建它。下面是如何创建一个长度为3的Int16Array

var i8 = new Int16Array(3);    
console.log(i8);    
//返回[0,0,0]

您还可以创建一个 buffer,以分配您希望数组占用的数据量(以字节为单位)。 

注意

要使用缓冲区创建类型化的数组,您需要将字节数分配为上面列出的字节的倍数。

//创建不同的Int16Array数组    
var byteSize = 6; //需要是2的倍数    
var buffer = new ArrayBuffer(byteSize);    
var i8View = new Int16Array(buffer);    
buffer.byteLength; //返回6    
i8View.byteLength; //返回6    
console.log(i8View); //返回[0,0,0]

buffer是只传递数据的通用对象。您无法正常访问它们。要访问它们,您需要先创建一个 view。 

i8View[0] = 42;    
console.log(i8View); //返回[42,0,0]

注意

类型化数组不具有正常数组的一些方法,例如.pop().push()。类型化数组用Array.isArray()来检查对象是否是数组。虽然更简单,但是对于不太精巧的JavaScript引擎来实现它们可能是一个优势。


练习

首先创建一个64字节的buffer。然后创建一个i32View类型的数组,其视图称为Int32Array

  • 你的 buffer 应该是64字节大。
  • 您的 buffer i32View 视图应该是64字节大。
  • 您的 buffer i32View 视图应该是16个元素长。
var buffer;
var i32View;

答案

方法说明
var声明一个变量,并可选地将其初始化为一个值。
new创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
ArrayBuffer ()用于表示通用的固定长度原始二进制数据缓冲区。
Int32Array ()表示在平台顺序字节中一个双补码32位有符号的整型数组。
console.log()用于在控制台输出信息(浏览器按下 F12 打开控制台)。
  
//创建不同的Int16Array数组    
var byteSize = 64; //需要是2的倍数    
var buffer = new ArrayBuffer(byteSize);    
var i32View = new Int32Array(buffer);   
 
console.log(buffer,i32View);

运行结果

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值