Цепные массивы и строковые методы в JavaScript - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь связать некоторые методы массива и строки, но это не работает. Было бы здорово, если бы кто-нибудь мог объяснить мне, почему такая функция не работает:

const scream = text => text.split('').push('!').join('').toUpperCase()

Ответы [ 4 ]

0 голосов
/ 31 октября 2018

Если вы хотите добавить символ / строку в конце строки, используйте функцию concat(<ch>). Если вы хотите изменить регистр на upper, используйте функцию toUpperCase().

Или

Просто вы можете использовать оператор + для объединения двух строк и добавления ! к нему.

var str = "Hello World";
    var res = str.toUpperCase().concat("!");
    var result = (str + '!').toUpperCase();
    console.log(res);
    console.log(result);
0 голосов
/ 31 октября 2018

Вы можете использовать Array#concat для возврата массива с другим значением вместо Array#push, который возвращает новую длину, но не является частью беглого интерфейс для последующего соединения (для которого требуется массив).

const scream = text => text.split('').concat('!').join('').toUpperCase();

console.log(scream('hi'));
0 голосов
/ 31 октября 2018

Если вы хотите добавить 1 ! в конце:

const scream = text => text.split('').concat('!').join('').toUpperCase();

Если вы хотите добавить его после каждой буквы:

const scream = text => text.split('').map(e => e + '!').join('').toUpperCase();

push не возвращает массив, поэтому join не вызывается для массива в вашем случае.

0 голосов
/ 31 октября 2018

Push не возвращает массив. Вот пример, который демонстрирует, что происходит с push, и показывает другой способ сделать это:

const scream = text => text.split('').push('!').join('').toUpperCase()

const test = ['a', 'b', 'c'];
const result = test.push('!')

console.log(result)

const newScream = text => [
  ...text,
  '!'
].join('').toUpperCase()

newScream('hello')

console.log(newScream('hello'))
...