根据the documentation on the Uint8ClampedArray,
Uint8ClampedArray类型数组表示一个8位无符号整数数组,数组为0-255;如果您指定的值超出[0,255]范围,则会设置0或255.
其他TypedArray的功能类似。给定列出的类型中的任何类型数组,有没有办法以编程方式派生可能存储在其中的最大/最小值?
有些事情:
Uint8ClampedArray().maxItemValue // returns 255
答案 0 :(得分:1)
我使用以下内容:
function maxElementValue(arr) {
const c = arr.constructor;
const test = c.of(-1.5)[0];
if (test > 0) // unsigned integers
return test;
// return 0xFFFFFFFF >>> (32 - 8 * c.BYTES_PER_ELEMENT);
// return Math.pow(2, 8 * c.BYTES_PER_ELEMENT) - 1;
if (test == -1) // signed integers
return 0x7FFFFFFF >>> (32 - 8 * c.BYTES_PER_ELEMENT);
// return Math.pow(2, 8 * c.BYTES_PER_ELEMENT - 1) - 1;
if (test == 0) // clamped
return 0xFF; // there's only one of these
if (test == -1.5)
throw new TypeError("floats are not supported");
throw new TypeError("weirdly behaving typed array");
}