0

概括

我一直在尝试通过一个包含 Unicode 代码点表的数组来解决这个问题,但是它太大了,我遇到了内存错误。

到目前为止我的努力细节

我将 Typescript 与 Micro:Bit 结合使用。我的程序需要一个大数组(128 个条目)。此数组存储 unicode 表的各种十六进制表示:

let font: number[] = [0x000b6526, 0x010514bf, 0x0004d6b2, 0x0010fc21, 0x0007c20f,
  0x00744107, 0x01f4111f, 0x000d909b, 0x00117041, 0x0008ceb9, 0x0008c7e0, 0x01041041, .......];

但是,将此数组存储在 Micro:bit 上会导致 021 错误(没有可用内存或 GC 中的对象过多)。有没有我错过的存储这个数组的替代方法?在我的程序中,我需要将此数组用作查找表,以将字符串的字符转换为相应的 unicode 字符:

let character = font[string.charCodeAt(stringPosition)]

有关如何解决此内存问题的任何想法或建议,或者是否有更好的方法来实现我在此问题标题中所述的目标?

4

1 回答 1

0

我高度怀疑这是XY Problem的一个案例,而您真正的问题是:

“如何有效地将字符转换为其 Unicode 代码点?”

如果我是对的,这是您的解决方案。将您的数组和查找替换为:

let s = 'a  right now would be nice.'
let stringPosition = 2 // third char
let character = s.codePointAt(stringPosition)  // 129347, the secret code for a stiff drink

codePointAt是一个新的 ES6 方法string。如果你tsconfigES2015(又名 ES6)作为target.

如果您无法切换到 ES6 或更高版本,则可以通过将函数复制到代码中来使用MDN 文章中给出的 Polyfill 。codePointAt

于 2021-07-06T15:16:29.850 回答