如何在ClojureScript中从Uint8Array中获取数据?

问题描述

我在ClojureScript站点中从midiAccess对象作为Uint8Array获得MIDI消息,但似乎无法将其转换为可以从中获取值的东西。 (js/console.log message)在浏览器控制台中生成Uint8Array(3) [128,65,0]。 实际上,消息上的“第一个”获得第一个值,但随后的“第二个”则没有。使用js-> clj似乎没有将其转换为可用的任何东西。如何处理数据呢?我尝试过js->clj,但似乎保持不变。

解决方法

以下是一些示例:

(let [ui8a (Uint8Array.from [0 1 2 3 4 5])]

然后

ui8a              => #object[Uint8Array 0,1,2,3,4,5]

(.-length ui8a)   => 6
(first ui8a)      => 0
(second ui8a)     => 1
(aget ui8a 3)     => 3

(into [] ui8a)    => [0 1 2 3 4 5]  ; either one works
(vec ui8a)        => [0 1 2 3 4 5]

您可能会发现此list of documentation sources有用。特别要确保每天学习Clojure CheatSheet!