【问题标题】:How to get an array from ArrayBuffer?如何从 ArrayBuffer 中获取数组?
【发布时间】:2019-02-22 19:20:05
【问题描述】:

我有一个 ArrayBuffer,它看起来像:

此缓冲区位于名为myBuffer 的变量下,我感兴趣的是从该对象中获取Uint8Array

我尝试循环为:

myBuffer.forEach(function(element) {
    console.log(element);
});

并直接访问数组为:

console.log(myBuffer['[[Uint8Array]]']);
console.log(myBuffer['Uint8Array']);

但似乎这些都不是正确的方法

【问题讨论】:

  • new Uint8Array(myBuffer)
  • [[…]](以及__proto__)中包含的“属性”只是 devtools 检查器对内部值的呈现。它们实际上并不存在于对象上。

标签: javascript arrays arraybuffer typed-arrays


【解决方案1】:

您看到的那些伪属性是开发人员控制台为了您的利益而放置在那里的。它们根本不存在,作为属性或符号 (AFAIK),即使它们是非标准的。

您可以通过以下标准方式轻松获得缓冲区的Uint8Array 视图:

new Uint8Array(myBuffer)

【讨论】:

    【解决方案2】:

    您首先需要将数组缓冲区转换为类型化数组,然后您可以使用扩展运算符创建一个数组

    const typedArray = new Uint8Array(myBuffer);
    const array = [...typedArray];
    

    【讨论】:

    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 2019-07-13
    • 2013-04-28
    • 2019-04-05
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多