28

私はここで間違った質問をしているかもしれないので、答えが別のスレッドにあるかどうかをお詫びします...しかし私は無駄に周りを見回しました。

スニペットでは、なぜこれが機能しないのですか?

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

キーイベントを配列に収集していて、プロンプトが表示されたらそれらを文字として書き出せるようにしたいと考えています。そしてこれは機能しますが:

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

配列として渡すと、機能しないようです。また、最初に配列をString()に変換しようとしました。また、array.join( "、");も変換しました。カンマ区切りのリストを作成するには...まだ何もありません。何か案は?配列に収集した値をcharに変換するためのより良い方法はありますか?

4

8 に答える 8

42

関数のapply()メソッドを使用できます...

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

jsFiddle

ES6はスプレッド演算子を使用できます...

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

You could also use the array's reduce() method, but older IEs do not support it. You could shim it, but the apply() method is better supported.

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

jsFiddle.

于 2012-03-30T03:09:49.983 に答える
10

はい、apply()を使用して、配列が引数として渡した関数を呼び出すことができます。

array = [72,69,76,76,79];
document.write(String.fromCharCode.apply(String, array));
于 2012-03-30T03:09:24.637 に答える
3

.apply()関数を呼び出すために使用する場合fromCharCode()は、次のように関数の引数に変換される配列を渡すことができます。

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

あなたはそれがここで働くのを見ることができます:http://jsfiddle.net/jfriend00/pfLLZ/

于 2012-03-30T03:11:00.097 に答える
1

このメソッドは、次のように使用することを目的としています。

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

メソッドが複数のパラメーターをリストとして予期している場合は、配列を渡します。

于 2012-03-30T03:09:34.877 に答える
0

次のようにループを使用する必要がある場合があります

for(var i = 0; i < array.length; i++)
       document.write(String.fromCharCode(array[i]));
}
于 2012-03-30T03:17:07.227 に答える
0

新しいバージョンのjavascriptでは、次を使用できますspread syntax

const array = [72,69,76,76,79];
document.write(String.fromCharCode(...array));
于 2021-09-15T12:21:46.627 に答える
-2

これが私がそれをする2つの方法です:

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+')'));

于 2016-01-14T08:01:39.383 に答える
-2

関数は次のとおりです。

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"));

于 2016-01-14T08:43:16.627 に答える