JavaScript: используйте Join, чтобы сделать массив строк, используя входной аргумент в качестве разделителя между словами -> Replace Error - PullRequest
1 голос
/ 24 марта 2019

У меня есть следующий код:

function myJoin(array, separator) {

  let newStr = array.join(separator).replace("\", "")

    return newStr

  }

  myJoin(['let\'s', 'make', 'a', 'list'], ' ');

Я ожидаю, что результат будет: «Давайте составим список», но вместо этого он выдаст мне ошибку.

evalmachine.<anonymous>:21
  let newStr = array.join(separator).replace("\", "")
                                                   ^^
SyntaxError: Invalid or unexpected token

Что не так с моим методом замены?

Ответы [ 4 ]

1 голос
/ 24 марта 2019

Вам не нужно replace()

\ в вашей строке на самом деле не символ - это часть escape-последовательности.В результате вам не нужно заменять его, если вы не пытаетесь заменить реальные, буквальные обратные слеши в строке.Это делает то, что вы ожидаете:

function myJoin(array, separator) {
    return array.join(separator) // you don't need replace here
}
  
console.log(myJoin(['let\'s', 'make', 'a', 'list'], ' '))
  
1 голос
/ 24 марта 2019

Проблема с "\".Обратная косая черта экранирует конечную кавычку, что означает, что строка не закрыта.Вместо него должно быть "\\".

Вот пример кода:

function myJoin(array, separator) {
  const newStr = array.join(separator).replace('\\', '')
  return newStr
}

const result = myJoin(['let\'s', 'make', 'a', 'list'], ' ')
console.log(result)

Если вам интересно, здесь - статья о escape-символах.

0 голосов
/ 24 марта 2019

Проблема "\".Обратная косая черта - это символ кавычки в JavaScript, который заставляет следующий символ обрабатываться буквально.Вам нужно написать "\\", чтобы создать строку из одного символа обратной косой черты.

0 голосов
/ 24 марта 2019

Вы избегаете " внутри вашей замены, вы должны использовать 2 обратных слеша, то есть: \\.Кроме того, replace() не является функцией для массивов, это должно быть сделано на string, поэтому вы также должны поменять местами join() перед replace().

Это поможет:

console.log(['let\'s', 'make', 'a', 'list'].join(" ").replace("\\", ""));

Похоже, вы хотели бы, чтобы это было применено конкретно к array, а как насчет прототипов?

Array.prototype.replace = function(separator = " ") {
  return this.join(separator).replace("\\", "");
};

// Can be called like so 
console.log(['let\'s', 'make', 'a', 'list'].replace(" "));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...