我可以将数组传递给fromCharCode

时间:2012-03-30 03:06:51

标签: javascript arrays fromcharcode

我可能会在这里提出错误的问题,所以如果答案是在另一个问题上,我会道歉......但我一直无所适从。

在一个片段中,为什么这不起作用?

array = [72,69,76,76,79];
document.write(String.fromCharCode(array));

我正在收集数组中的关键事件,并希望能够在提示时将它们写为字符。虽然这有效:

document.write(String.fromCharCode(72,69,76,76,79));

当我将它作为一个数组传递时,我似乎无法使它工作。我也尝试先将数组转换为String(),以及array.join(“,”);创建逗号分隔列表......但没有。有任何想法吗?有没有更好的方法将我在数组中收集的值转换为字符?

7 个答案:

答案 0 :(得分:35)

您可以使用函数的apply()方法...

document.write(String.fromCharCode.apply(null, array));

jsFiddle

ES6可以使用点差运算符......

document.write(String.fromCharCode(...array));

您也可以使用数组的reduce()方法,但较旧的IE不支持它。你可以 shim 它,但更好地支持apply()方法。

document.write(array.reduce(function(str, charIndex) {
    return str += String.fromCharCode(charIndex);
}, ''));​

jsFiddle

答案 1 :(得分:9)

是的,你可以使用apply()来调用一个数组作为参数传入的函数:

array = [72,69,76,76,79];
document.write(String.fromCharCode.apply(String, array));

答案 2 :(得分:3)

如果你使用.apply()来调用fromCharCode()函数,你可以传递一个数组,该数组将被转换为函数的参数,如下所示:

document.write(String.fromCharCode.apply(this, array));

您可以在此处查看:http://jsfiddle.net/jfriend00/pfLLZ/

答案 3 :(得分:1)

该方法更适合这样使用:

document.write(String.fromCharCode(72,69,76,76,79));

当方法需要多个参数作为列表时,您将传入一个数组。

答案 4 :(得分:0)

您可能必须按如下方式使用循环

for(var i = 0; i < array.length; i++)
       document.write(String.fromCharCode(array[i]));
}

答案 5 :(得分:-1)

以下是我要做的两种方式:

&#13;
&#13;
var arr=[119,119,119,46,87,72,65,75,46,99,111,109];
document.write(eval('String.fromCharCode('+arr+')'));

document.write('<hr>');

var arr='119,119,119,46,87,72,65,75,46,99,111,109';
document.write(eval('String.fromCharCode('+arr+')'));
&#13;
&#13;
&#13;

答案 6 :(得分:-1)

这是一个功能:

&#13;
&#13;
var unCharCode = function(x) {
  return this["eval"]("String['fromCharCode'](" + x + ")");
};

document.write(unCharCode([ 119, 119, 119, 46, 87, 72, 65, 75, 46, 99, 111, 109 ]));

document.write("<hr>");

document.write(unCharCode("119,119,119,46,87,72,65,75,46,99,111,109"));
&#13;
&#13;
&#13;