数组到JavaScript中的字符串

时间:2014-02-20 19:50:05

标签: javascript node.js

我得到一个数组,作为远程​​命令执行的响应(使用ssh2)。如何将其转换为字符串?

[97,112,112,46,106,115,10,110,111,100,101,46,106,115,10]

5 个答案:

答案 0 :(得分:7)

var result = String.fromCharCode.apply(null, arrayOfValues);

JSFiddle

<强>说明:

String.fromCharCode可以将char代码列表作为参数,每个char代码作为单独的参数(例如:String.fromCharCode(97,98,99))。

apply允许使用自定义this调用函数,并将参数作为数组提供(与call相反,它按原样获取参数)。因此,由于我们不关心this是什么,我们将其设置为null(但任何事情都可行)。

总之,String.fromCharCode.apply(null, [97,98,99])相当于String.fromCharCode(97,98,99)并返回'abc',这正是我们所期望的。

答案 1 :(得分:3)

这取决于你想要什么和你的意思。

选项一:如果要将文本转换为ASCII,请执行以下操作:

var theArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
theString = String.fromCharCode.apply(0, theArray);

(根据有用的评论编辑。)

产地:

app.js
node.js

选项二:如果您只想要以逗号分隔的列表,则可以执行.join(',')

var theArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
var theString = theArray.join(',');

你可以把你想要的任何东西作为分隔符放在.join()中,就像一个逗号和一个空格,连字符,甚至是单词。

答案 2 :(得分:2)

在node.js中,通常使用缓冲区:

> new Buffer([97,112,112,46,106,115,10,110,111,100,101,46,106,115,10]).toString()
'app.js\nnode.js\n'

它会比fromCharCode更快,而且最重要的是,它会正确保存utf-8序列。

答案 3 :(得分:1)

只需使用toString()函数:

var yourArray = [97,112,112,46,106,115,10,110,111,100,101,46,106,115,10];
var strng = yourArray.toString();

答案 4 :(得分:0)

ssh2 moduleBuffer(不是实际的javascript数组)传递给来自exec()或shell()的流的'data'事件处理程序。除非您在流上调用了setEncoding(),在这种情况下,您将获得一个包含您指定的编码的字符串。

如果您想要字符串表示而不是原始二进制数据,那么请调用chunk.toString()