Могу ли я передать массив изCharCode
Возможно, я задал неправильный вопрос, поэтому я приношу свои извинения, если ответ на другой вопрос... но я огляделся безрезультатно.
в отрывке, почему это не работает?
array = [72,69,76,76,79];
document.write(String.fromCharCode(array));
Я собираю ключевые события в массиве и хочу, чтобы они могли писать их как символы при появлении запроса. И хотя это работает:
document.write(String.fromCharCode(72,69,76,76,79));
Я не могу заставить его работать, когда я передаю его как массив. Я также попытался сначала преобразовать массив toString(), а также array.join( "," ); создать список, разделенный запятой... но ничего. Есть идеи? Есть ли лучший способ конвертировать значения, которые я собираю в моем массиве, в символы?
Ответы
Ответ 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"));