JavaScript 类型化数组

您所在的位置:网站首页 数组输入格式有哪些类型的方法 JavaScript 类型化数组

JavaScript 类型化数组

2024-07-11 05:43:43| 来源: 网络整理| 查看: 265

类型化数组视图有自描述的名称,并且提供了所有常见数值类型的视图,如 Int8、Uint32 和 Float64 等等。还有一种特殊的类型化数组视图,Uint8ClampedArray,它会将值钳制(clamp)到 0 到 255 之间,这在 Canvas 数据处理等场景中很有用。

类型 值范围 字节数 描述 对应的 Web IDL 类型 等效的 C 类型 Int8Array -128~127 1 8 位有符号整数(补码) byte int8_t Uint8Array 0~255 1 8 位无符号整数 octet uint8_t Uint8ClampedArray 0~255 1 8 位无符号整数(值会被裁剪) octet uint8_t Int16Array -32768~32767 2 16 位有符号整数(补码) short int16_t Uint16Array 0~65535 2 16 位无符号整数 unsigned short uint16_t Int32Array -2147483648~2147483647 4 32 位有符号整数(补码) long int32_t Uint32Array 0~4294967295 4 32 位无符号整数 unsigned long uint32_t Float32Array -3.4E38~3.4E38 以及 1.2E-38(最小正数) 4 32 位 IEEE 浮点数(7 位有效数字,例如 1.123456) unrestricted float float Float64Array -1.8E308~1.8E308 以及 5E-324(最小正数) 8 64 位 IEEE 浮点数(16 位有效数字,例如 1.123...15) unrestricted double double BigInt64Array -263~263 - 1 8 64 位有符号整数(补码) bigint int64_t (signed long long) BigUint64Array 0~264 - 1 8 64 位无符号整数 bigint uint64_t (unsigned long long)

所有类型化数组类型都有相同的方法与属性,这些方法与属性由 TypedArray 类定义。它们的唯一区别在于底层数据类型和字节数的不同。这在值编码与标准化中有详细讨论。

类型化数组原则上是固定长度的,因此并不存在可以改变数组长度的方法,如 pop、push、shift、splice 和 unshift。此外,flat 也不可用,因为类型化数组无法嵌套;concat 和 flatMap 则是由于应用场景不大,亦不可用。由于 splice 不可用,因此 toSpliced 也不可用。所有其他数组方法都是 Array 和 TypedArray 共享的。

另一方面,类型化数组有额外的 set 和 subarray 方法,可以用来优化“同缓冲多视图”的场景。set() 方法允许你使用一个数组或类型化数组的数据,来对另一个类型化数组的多个索引同时进行设置。如果两个类型化数组共享同一个底层缓冲,那么这个操作可能会更加高效,因为这是一个快速的内存移动。subarray() 方法创建一个新的类型化数组视图,它引用与原始类型化数组相同的缓冲,但是范围更窄。

在不改变底层缓冲的前提下,无法直接改变类型化数组的长度。但是,当类型化数组的底层是可调整大小的缓冲,且没有固定的 byteLength 时,它就会跟踪长度,即它的长度会随着缓冲的大小而自动调整。详情请参阅底层为可变大小缓冲时的行为。

类似于普通数组,你可以使用方括号表示法来访问类型化数组的元素。底层缓冲中对应的字节会被解析为一个数字。任何使用数字(或数字的字符串表示,因为数字总是在访问属性时被转换为字符串)的属性访问都会被类型化数组代理——它们永远不会与对象本身交互。这意味着,例如:

超越边界索引的访问总是返回 undefined,而不会实际访问对象上的属性。 任何尝试写入超越边界的属性的行为都不会生效:它既不会抛出错误,也不会改变缓冲或类型化数组。 类型化数组的索引看起来是可配置的和可写的,但是任何改变它们的属性的尝试都会失败。 jsconst uint8 = new Uint8Array([1, 2, 3]); console.log(uint8[0]); // 1 // 仅用作示例。不要在生产代码中使用。 uint8[-1] = 0; uint8[2.5] = 0; uint8[NaN] = 0; console.log(Object.keys(uint8)); // ["0", "1", "2"] console.log(uint8[NaN]); // undefined // 非数字访问仍然有效 uint8[true] = 0; console.log(uint8[true]); // 0 Object.freeze(uint8); // TypeError:无法冻结非空缓冲的视图


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭