Я действительно думаю, что это выглядит намного лучше, чем один лайнер. Я на самом деле нужно, чтобы сделать это в интервью недавно, и они казались довольно впечатлены краткостью моего решения
Так вместо этого я хотел бы использовать это: function letterChange(str){ return String.fromCharCode.apply(null,Array.prototype.map.call(str,i=>i.charCodeAt(0)+1)); }
И не о том, что я => u.charCodeAt (0) является лямбда-функцией и не будет работать во всех веб-браузерах без использования транспилятора. Вы также можете использовать это, если вы все еще используете ES5:
function letterChange(str){ return String.fromCharCode.apply(null,Array.prototype.map.call(str,function(i){ return i.charCodeAt(0)+1; })); }
Чтобы объяснить это немного больше позволяет разбить его:
первое, что может вызвать вопросы функция «применить». Применить принимает 2 параметра, объект (в этом случае неактуальен, поэтому мы используем null) и массив параметров. Затем эти параметры передаются в форме, разделенной запятой, на функцию, на которую мы ссылаемся. В случае fromCharCode передача нескольких параметров возвращает строку, состоящую из всех результатов. Затем мы передаем его «Array.prototype.map.call», который позволяет нам называть массивную литеральную карту объектов на String, которая не поставляется с картой из коробки. Затем мы передаем эту функцию для применения и возврата полного результата.
Вы хотите только буквы алфавита? [A-Z]? –