当前位置: 首页 > Web前端 > JavaScript

八字数组的一些理解

时间:2023-03-26 21:06:30 JavaScript

构造型数组的概念是指一种特殊类型的数组,其中包含数值类型。方便我们将内存中的数据以二进制的形式存储起来,提供读取方法的预知ArrayBufferArrayBuffer是所有构造型数组和视图引用的基本单位varbuffer=newArrayBuffer(2);buffer.byteLength//2、buffer的字数Numberofsectionsvarbuffer1=buffer.slice(1)//截取bufferbuffer1.byteLength//11、声明的ArrayBuffer会将所有二进制位初始化为02,ArrayBuffer可以被垃圾回收,无需手动明确ElementTypeDataViewDataView是第一个操作ArrayViewvarbuffer=newArrayBuffer(2)varview=newDataView(buffer);view.byteOffset//0view.byteLength//2varview1=newDataView(buffer,1,1);view1.byteOffset//1view1.byteLength//1赋值和赋值varbuffer=newArrayBuffer(2)varview=newDataView(buffer);view.setUint8(0,1)view.getUint8(0);//1view.getUint8(1);//0字节顺序默认是取值赋值方法中字节的正常顺序,当我们的last参数指定为true,向后保存,向后取varbuffer=newArrayBuffer(2)varview=newDataView(buffer);view.setUint16(0,1)//0000000000000001view.getUint16(0,true)//(0000000100000000)->256,字节顺序反转view.setUint16(0,1,true)//0000000100000000view.getUint16(0,1)//256溢出问题varbuffer=newArrayBuffer(2)varview=newDataV查看(缓冲区);view.setUint8(0,256)view.getUint8(0)//0,从低位开始,忽略高位view.setUint8(2,1)//超出长度,RangeError构造数组和DataView同理,构造数组可以同样操作ArrayBuffer,但是继承了Array中的很多方法,可以更方便的操作ArrayBuffervarbuffer=newArrayBuffer(2)vararray=newUint16Array(buffer)console.log(array.length);//1console.log(array.buffer===buffer);//truevararray1=newUint16Array(array)//分配新缓存,深拷贝vararray2=array.slice(0,1)//分配新缓存,深拷贝数组=Uint16Array.of(1,2,3)//长度为3,值为1,2,3array=Uint16Array.from([1,2,3])//长度为3,值为1,2,3array[0]//valuearray[0]=2//赋值set方法set方法用于在指定位置填充数据varbuffer=newArrayBuffer(4)vararray=newUint16Array(buffer)array.set([1,2],0)//[1,2]subarray方法subarray返回构造型a的子数组rray根据起始索引和结束索引varbuffer=newArrayBuffer(4)vararray=newUint16Array(buffer)array.set([1,2],0)//[1,2]varsub=array.subarray(0,1)//Uint16Array[1]sub[0]=2console.log(array)//Uint16Array[2,2],数组随之变化。溢出问题和DataView一样,都是从低位开始,忽略过多的高位Blob和ArrayBuffer之间的转换varbuffer=newArrayBuffer(1);阿拉yBuffer=newUint16Array([1,2])varb=newBlob([buffer,arrayBuffer])//ArrayBuffer转为Blobconsole.log(b)//Blob{size:5,type:""}varreader=newFileReader();reader.onloadend=function(){console.log(this.result)//ArrayBuffer(5)}reader.readAsArrayBuffer(b)//Blob转为ArrayBuffer