Функция удаления знаков препинания из массива строк

avatar
Alan Ganser
1 июля 2021 в 20:26
66
1
1

В настоящее время я выполняю проект на JavaScript, в котором я удаляю определенные знаки препинания из массива строк (например, массив "приветствия"). Я использовал итератор для перебора каждого элемента в массиве, а затем написал цикл для перебора каждой буквы в текущем элементе. Я объявил пустую переменную, которую использовал для объединения каждой буквы в зависимости от того, не является ли буква двойными кавычками, точкой или восклицательным знаком. Затем, после того как все буквы в слове пройдены, я возвращаю окончательную объединенную строку в итератор карты. Когда я пытаюсь распечатать noPunctGreetings, я получаю пустые строки.

const greetings = ['Hi,', 'my', 'name', 'is', 'Dave!']

const noPunctGreetings = greetings.map(word => {
  let concatedWord = '';
  for (let i = 0; i < word.length; i++) {
    if (word[i] != '"' || word[i] != '.' || word[i] != '!') {
      concatedWord.concat(word[i].toLowerCase());
    } 
  }
  return concatedWord;
})

console.log(noPunctGreetings)

>>> ['', '', '', '', '']

Если есть другой более чистый способ сделать это, сообщите мне.

Источник

Ответы (1)

avatar
dave
1 июля 2021 в 20:28
2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat

Метод concat() объединяет строковые аргументы в вызывающую строку и возвращает новую строку.

Так нужно сделать

concatedWord = concatedWord.concat(word[i].toLowerCase());

Также вам нужно сделать:

word[i] != '"' && word[i] != '.' && word[i] != '!'

вместо ||, поскольку word[i] всегда будет либо не ", либо не .

const greetings = ['Hi,', 'my', 'name', 'is', 'Dave!']

const noPunctGreetings = greetings.map(word => {
  let concatedWord = '';
  for (let i = 0; i < word.length; i++) {
    if (word[i] != '"' && word[i] != '.' && word[i] != '!') {
      concatedWord = concatedWord.concat(word[i].toLowerCase());
    } 
  }
  return concatedWord;
})

console.log(noPunctGreetings)

Или проще:

const greetings = ['Hi,', 'my', 'name', 'is', 'Dave!']

const noPunctGreetings = greetings.map(word => word.replace(/[."!]/g, "").toLowerCase())

console.log(noPunctGreetings)
Alan Ganser
1 июля 2021 в 20:42
0

Большое спасибо!