确定TypedArray项

时间:2016-10-27 01:21:53

标签: javascript web-frontend

根据the documentation on the Uint8ClampedArray

  

Uint8ClampedArray类型数组表示一个8位无符号整数数组,数组为0-255;如果您指定的值超出[0,255]范围,则​​会设置0或255.

其他TypedArray的功能类似。给定列出的类型中的任何类型数组,有没有办法以编程方式派生可能存储在其中的最大/最小值?

有些事情:

Uint8ClampedArray().maxItemValue // returns 255

1 个答案:

答案 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");
}