类型数组
试试看
描述
TypedArray对象
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
|
|
|
|
||
|
|
值编码和规范化
无符号整数数组( Uint8阵列 , Uint16阵列 , Uint32阵列 、和 BigUint64阵列 )将数字直接存储为二进制。 带符号整数数组( Int8阵列 , Int16阵列 , Int32阵列 、和 BigInt64阵列 )使用存储号码 二的补码 . 浮点数组( 浮点16数组 , Float32数组 、和 Float64数组 )使用存储号码 IEEE 754标准 浮点格式。 这个 编号 reference提供了有关确切格式的更多信息。 JavaScript数字默认使用双精度浮点格式,这与 Float64数组 . Float32数组 尾数使用23(而不是52)位,指数使用8(而不是11)位。 浮点16数组 尾数使用10位,指数使用5位。 请注意,规范要求 NaN公司 值使用相同的位编码,但确切的位模式取决于实现。 Uint8夹紧阵列 是一个特例。 它以二进制形式存储数字 Uint8阵列 是的,但当您存储范围外的数字时 夹具 通过数学值将数字设置为0到255的范围,而不是截断最高有效位。
所有整数数组(除 Uint8夹紧阵列 )使用 固定宽度数字转换 ,它首先截断数字的小数部分,然后取最低位。 Uint8夹紧阵列 首先,将数字限制在0到255的范围内(大于255的值将变为255,小于0的值将变成0)。 那就好了 轮 (代替地板)结果精确到最接近的整数,具有半到偶数; 也就是说,如果数字正好位于两个整数之间,则将四舍五入为最接近的偶数。 例如, 0.5 成为 0 , 1.5 成为 2 、和 2.5 成为 2 . 浮点16数组 和 Float32数组 执行“四舍五入到偶数”将64位浮点数字转换为32位和16位。这与 数学公式() 和 数学f16round() .
查看可调整大小的缓冲区时的行为
const buffer=新的ArrayBuffer(8,{maxByteLength:16}); const float32=新的Float32Array(缓冲区); console.log(float32.byteLength);// 8 console.log(float32.length);// 2 缓冲区。调整大小(12); console.log(float32.byteLength);// 12 console.log(float32.length);// 三
const buffer=新的ArrayBuffer(8,{maxByteLength:16}); const float32=新的Float32Array(缓冲区,0,2); console.log(float32.byteLength);// 8 console.log(float32.length);// 2 控制台.log(float32[0]);// 0,初始值 缓冲区。调整大小(12); console.log(float32.byteLength);// 8 console.log(float32.length);// 2 控制台.log(float32[0]);// 0,初始值
const buffer=新的ArrayBuffer(8,{maxByteLength:16}); const float32=新的Float32Array(缓冲区,0,2); 缓冲区。调整大小(7); console.log(float32.byteLength);// 0 console.log(float32.length);// 0 控制台.log(float32[0]);// 未定义
缓冲区。调整大小(8); console.log(float32.byteLength);// 8 console.log(float32.length);// 2 控制台.log(float32[0]);// 0-再次回到界内!
const buffer=新的ArrayBuffer(8,{maxByteLength:16}); const float32=新的Float32Array(缓冲区,4); //float32是长度跟踪的,但它只从第4个字节扩展 //到缓冲区的末尾,因此如果缓冲区的大小调整为较短 //超过4个字节,则类型化数组将超出界限 缓冲区。调整大小(3); console.log(float32.byteLength);// 0
施工单位
new(Object.getPrototypeOf(Int8Array))(); //TypeError:抽象类TypedArray不可直接构造
新建TypedArray() 新TypedArray(长度) 新建TypedArray(TypedArray) 新建TypedArray(对象) 新TypedArray(缓冲区) 新TypedArray(缓冲区,字节偏移) 新TypedArray(缓冲区、字节偏移量、长度)
参数
typedArray(类型数组) -
使用的实例调用时 类型数组 子类 typedArray(类型数组) 复制到新的类型化数组中。 对于非- bigint公司 类型数组 构造函数 typedArray(类型数组) 参数只能是非- bigint公司 类型(例如 Int32阵列 ). 类似地,对于 bigint公司 类型数组 建造师( BigInt64阵列 或 BigUint64阵列 ) typedArray(类型数组) 参数只能是 bigint公司 类型。 中的每个值 typedArray(类型数组) 在复制到新数组之前,转换为相应的构造函数类型。 新类型数组的长度将与 typedArray(类型数组) 参数。 对象 -
当使用非 类型数组 实例中创建一个新的类型化数组的方法与 TypedArray.from() 方法。 长度 可选 -
使用非对象调用时,参数将被视为指定类型化数组长度的数字。 在内存中创建一个大小为的内部数组缓冲区 长度 乘以 字节_性能_元素 字节,用零填充。 省略所有参数等同于使用 0 作为 长度 . 缓冲器 , 字节偏移量 可选 , 长度 可选 -
当使用 阵列缓冲区 或 SharedArrayBuffer(共享阵列缓冲区) 实例,也可以选择 字节偏移量 和a 长度 参数时,将创建一个新的类型化数组视图,用于查看指定的缓冲区。 这个 字节偏移量 (以字节为单位)和 长度 (元素数量,每个元素占用 字节_性能_元素 字节)参数指定类型化数组视图将公开的内存范围。 如果两者都省略,则所有 缓冲器 已查看; 只要 长度 省略,剩余的 缓冲器 从开始 字节偏移量 已查看。 如果 长度 则类型化数组变为 纵向跟踪 .
例外情况
静态特性
TypedArray[Symbol.species] -
用于创建派生对象的构造函数。
TypedArray。 字节_性能_元素 -
返回不同元素大小的数值 类型数组 物体。
静态方法
TypedArray.from() -
创建新的 类型数组 从类数组或可迭代对象。 另请参见 数组.from() . TypedArray.of() -
创建新的 类型数组 参数数量可变。 另请参见 数组.of() .
实例属性
类型数组原型缓冲区 -
返回 阵列缓冲区 被类型化数组引用。 类型数组原型字节长度 -
返回类型化数组的长度(以字节为单位)。 类型数组原型字节偏移 -
返回类型化数组从其开始的偏移量(以字节为单位) 阵列缓冲区 . 类型数组原型构造函数 -
创建实例对象的构造函数。 类型数组原型构造函数 是隐藏的 类型数组 构造函数,但每个类型化数组子类也定义了自己的 建造师 属性。 类型阵列.原型.长度 -
返回类型化数组中包含的元素数。 TypedArray.prototype[Symbol.toStringTag] -
的初始值 TypedArray.prototype[Symbol.toStringTag] 属性是一个getter,它返回与类型化数组构造函数名称相同的字符串。 它会返回 未定义 如果 这 值不是类型化数组子类之一。 此属性用于 Object.prototype.toString() 然而,因为 类型数组 也有自己的 toString() 方法,除非调用 Object.prototype.toString.call() 类型化数组为 这个Arg .
TypedArray.prototype类型。 字节_性能_元素 -
返回不同 类型数组 物体。
实例方法
类型数组.protype.at() -
获取一个整数值并返回该索引处的项。 此方法允许从最后一项倒数的负整数。 TypedArray.prototype.copyWithin() -
复制数组中的数组元素序列。 另请参见 Array.prototype.copyWithin() . TypedArray.prototype.entries() -
返回一个新 数组迭代器 对象,该对象包含数组中每个索引的键/值对。 另请参见 Array.prototype.entries() . TypedArray.prototype.every() -
测试数组中的所有元素是否通过函数提供的测试。 另请参见 Array.prototype.every() . TypedArray.prototype.fill() -
使用静态值填充从开始索引到结束索引的数组的所有元素。 另请参见 Array.prototype.fill() . TypedArray.prototype.filter() -
使用提供的筛选函数返回的此数组的所有元素创建一个新数组 真的 。另请参阅 Array.prototype.filter() . TypedArray.prototype.find() -
返回第一个 要素 在满足所提供测试功能的数组中,或 未定义 如果没有找到合适的元素。 另请参见 Array.prototype.find()数组原型查找() . TypedArray.prototype.findIndex() -
返回数组中具有满足所提供测试函数的元素的第一个索引值,或 -1 如果没有找到合适的元素。 另请参见 数组.prototype.findIndex() . TypedArray.prototype.findLast() -
返回满足所提供测试函数的数组中最后一个元素的值,或 未定义 如果没有找到合适的元素。 另请参见 Array.prototype.findLast() . TypedArray.prototype.findLastIndex() -
返回数组中满足所提供测试函数的最后一个元素的索引,或 -1 如果没有找到合适的元素。 另请参见 数组.prototype.findLastIndex() . TypedArray.prototype.forEach() -
为数组中的每个元素调用函数。 另请参见 数组.原型.forEach() . TypedArray.prototype.includes() -
确定类型化数组是否包括某个元素,返回 真的 或 假 视情况而定。 另请参见 Array.prototype.includes() . TypedArray.prototype.indexOf() -
返回数组中等于指定值的元素的第一个(最小)索引,或 -1 如果没有找到。 另请参见 Array.prototype.indexOf() . TypedArray.prototype.join() -
将数组的所有元素连接到字符串中。另请参阅 Array.prototype.join() . TypedArray.prototype.keys() -
返回一个新的数组迭代器,其中包含数组中每个索引的键。 另请参见 Array.prototype.keys() . TypedArray.prototype.lastIndexOf() -
返回数组中元素的最后(最大)索引,该索引等于指定值,或 -1 如果没有找到。 另请参见 数组.prototype.lastIndexOf() . TypedArray.prototype.map() -
创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。 另请参见 Array.prototype.map() . TypedArray.prototype.reduce() -
对累加器和数组的每个值(从左到右)应用函数,以将其减少为单个值。 另请参见 Array.prototype.reduce() . TypedArray.prototype.reduceRight() -
对累加器和数组的每个值(从右到左)应用函数,以将其减少为单个值。 另请参见 Array.prototype.reducedRight()数组原型减少右侧() . TypedArray.prototype.reverse() -
颠倒数组元素的顺序-第一个元素变成最后一个,最后一个元素变成第一个。 另请参见 Array.prototype.reverse() . TypedArray.prototype.set() -
在类型化数组中存储多个值,从指定数组中读取输入值。 TypedArray.prototype.slice() -
提取数组的一部分并返回新数组。 另请参见 Array.prototype.slice() . TypedArray.prototype.some() -
退换商品 真的 如果该阵列中的至少一个元件满足所提供的测试功能。 另请参见 Array.prototype.some() . TypedArray.prototype.sort() -
就地对数组的元素进行排序并返回数组。 另请参见 Array.prototype.sort() . TypedArray.prototype.subarray() -
返回一个新 类型数组 从给定的开始和结束元素索引。 TypedArray.prototype.toLocaleString()类型数组.原型.toLocaleString() -
返回表示数组及其元素的本地化字符串。 另请参见 Array.prototype.toLocaleString() . TypedArray.prototype.toReversed() -
返回元素顺序相反的新数组,而不修改原始数组。 TypedArray.prototype.toSorted() -
返回元素按升序排序的新数组,而不修改原始数组。 TypedArray.prototype.toString() -
返回表示数组及其元素的字符串。 另请参见 Array.prototype.toString() . TypedArray.prototype.values() -
返回一个新 数组迭代器 对象,该对象包含数组中每个索引的值。 另请参见 Array.prototype.values() . TypedArray.prototype.with() -
返回一个新数组,其中给定索引处的元素替换为给定值,而不修改原始数组。 TypedArray.prototype[Symbol.iterator]() -
返回一个新 数组迭代器 对象,该对象包含数组中每个索引的值。
示例
财产访问权
//使用标准数组语法进行设置和获取 const int16=新的Int16Array(2); 整数16[0]=42; console.log(int16[0]);// 42 //未参考原型上的索引属性(Fx 25) Int8Array.prototype[20]=“foo”; 新Int8Array(32)[20];// 0 //即使出界 Int8Array.prototype[20]=“foo”; 新Int8Array(8)[20];// 未定义 //或使用负整数 Int8Array.prototype[-1]=“foo”; 新Int8Array(8)[-1];// 未定义 //但允许命名属性(Fx 30) Int8Array.prototype.foo=“bar”; 新Int8Array(32).foo;// “酒吧”
无法冻结
const i8=(1,2,3)的Int8Array; 对象冻结(i8); //TypeError:无法冻结包含元素的数组缓冲区视图
ByteOffset必须对齐
const i32=新的Int32Array(新的ArrayBuffer(4),1); //RangeError:Int32Array的开始偏移量应为4的倍数
const i32=新的Int32Array(新的ArrayBuffer(4),0);
ByteLength必须对齐
const i32=新的Int32Array(新的ArrayBuffer(3)); //RangeError:Int32Array的字节长度应为4的倍数
const i32=新的Int32Array(新的ArrayBuffer(4));