javascript - 在大数据上调用 fromCharCode 的有效方法
问题描述
我所拥有的:一个由空格分隔的数字字符串。
我想要的:一个由fromCharCode
应用于输入中的每个数字组成的字符串。
var str = "72 69 76 76 79" ;
var arr = str.split(" ") ;
var num = arr.map(Number) ;
var txt = num.map(function(value) { return String.fromCharCode(value); }) ;
return txt.join('') ;
这段代码有效,结果是 string HELLO
,但在生产中的长度str
将是数百万,所以我需要最有效的翻译。(注意:最后的分配行看起来有点奇怪。这是为了绕过TJ Crowder在这个线程fromCharCode
中很好地描述的一个怪癖。)
我没有看到任何关于初始的方法split
,但我注意到连续两次map
调用是否是要走的路。Number
在显式循环中执行并fromCharCode
一次翻译一个字符会更好吗?我认为 有一些开销foreach
,但也许只运行一次数据是值得的。
我已经看到它fromCharCode
接受逗号分隔的数字列表,但是我看不到如何在不引入比上面代码更多的遍历的情况下翻译我的整数数组。
我的 js 知识并没有超出 map 和显式循环的范围。有没有更现代或不那么天真的方法?最好我想要js香草。
解决方案
“最快”的方法通常是需要对数据进行最少“更改”的方法。
也就是说,您的初始代码没有任何问题,除非我们正在谈论大量文本,或者代码需要经常执行,否则它应该不是问题。
如果您需要额外的性能,正则表达式可能是您的选择。您跳过初始化 Array 而不是两个映射操作(一个到数字,另一个返回到字符串),所有这些都可以通过单个回调处理:
function CodeToChar(str) {
return str.replace(/\w+(\s|$)/igm, function replacePart(part) {
return String.fromCharCode(parseInt(part, 10));
})
}
console.log(
CodeToChar("72 69 76 76 79")
)
推荐阅读
- nlp - BERT 词嵌入的大小/范数有什么意义?
- python - 查找所有以特定字符开头和结尾的子字符串
- curl - 使用 API 针对 kerberized Cloudera 提交 Oozie 作业
- c++ - 使用 boost-python 将参数从 Python 脚本传递到 C++
- r - 当我执行 sapply 时从 return() 语句中获取一个值,当我手动执行语句时获取另一个值
- linux - 是否可以监视所有程序以访问不存在的文件?
- javascript - 将文件附件从 HTML 表单提交到外部 API
- java - Android 9.0:HTTP 请求在“最小化模式”中引发异常
- javascript - 为什么 process.stdout.write 最后会产生 1
- python - 当他/她加入我的频道时,我怎样才能快速踢出我的频道的成员?