Подтвердить что ты не робот

Могу ли я передать массив изCharCode

Возможно, я задал неправильный вопрос, поэтому я приношу свои извинения, если ответ на другой вопрос... но я огляделся безрезультатно.

в отрывке, почему это не работает?

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

Я собираю ключевые события в массиве и хочу, чтобы они могли писать их как символы при появлении запроса. И хотя это работает:

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

Я не могу заставить его работать, когда я передаю его как массив. Я также попытался сначала преобразовать массив toString(), а также array.join( "," ); создать список, разделенный запятой... но ничего. Есть идеи? Есть ли лучший способ конвертировать значения, которые я собираю в моем массиве, в символы?

4b9b3361

Ответ 1

Вы можете использовать метод apply()...

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

jsFiddle.

ES6 может использовать оператор распространения...

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

Вы также можете использовать метод массива reduce(), но старые IE не поддерживают его. Вы можете закрепить его, но метод apply() лучше поддерживается.

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

jsFiddle.

Ответ 2

Да, вы можете использовать apply() для вызова функции, которую массив передал в качестве аргументов:

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

Ответ 3

Если вы используете .apply() для вызова функции fromCharCode(), вы можете передать ему массив, который будет преобразован в аргументы для функции, подобной этой:

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

Вы можете увидеть, как он работает здесь: http://jsfiddle.net/jfriend00/pfLLZ/

Ответ 4

Этот метод больше предназначен для использования следующим образом:

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

Вы передаете массив, когда метод ожидает нескольких параметров в виде списка.

Ответ 5

Возможно, вам придется использовать цикл следующим образом

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

Ответ 6

Вот два способа, которые я сделал бы это:

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

Ответ 7

Вот функция:

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