Как удалить значение массива из строки в Javascript

Прямо вперед, как удалить значение массива из строки, пример:

var String = "Hi my name is ftk: [2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
var array = [ "[1]", "[2]" ]

---OUTPUT---

"Hi my name is ftk: what is yours? [ and how are 2 5 you? Are you ok?"

В основном я хочу удалить определенный массив и только тогда, когда это точно такое же слово, если это имеет смысл.

Я пробовал .replace с глобальным, но я не мог использовать там массив, я могу только ввести определенную строку, например:

var string2 = string.replace(/\[1|\]/g, '');

См. выше, я не могу удалить 2 слова одновременно, и было бы действительно отстойно вручную создавать для него новую переменную каждый раз, когда я добавляю определенное слово для удаления, поэтому лучше всего использовать массив.

Заранее спасибо.

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
0
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать класс символов, чтобы определить несколько совпадений для удаления. Затем в обратном вызове replace проверьте, встречается ли совпадение в array.

\[[12]]

Пример

var string2 = string.replace(/\[[12]]/g, '');

var string = "[3] Hi my name is ftk: [2][2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
var array = ["[1]", "[2]"];
var string2 = string.replace(
  /\[[12]]/g,
  m => array.includes(m) ? '' : m
);
console.info(string2);

@ ftk789 Я обновил код проверкой совпадающего значения в массиве.

The fourth bird 10.01.2023 16:55

Ваш код оставляет несколько квадратных скобок, ОП, похоже, хотел удалить именно то, что было в его массиве (включая скобки)

Adam Pearson 10.01.2023 16:57

@AdamPearson Именно то, что я хотел, но большое спасибо и за ответ, я ценю это.

ftk789 10.01.2023 17:01

@AdamPearson О, да, совпадение не должно быть проиндексировано.

The fourth bird 10.01.2023 17:02
Ответ принят как подходящий

Вы можете просто прокручивать свой массив, заменяя каждый элемент массива по мере продвижения:

let string = "Hi my name is ftk: [2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
let array = [ "[1]", "[2]" ]


for (let i = 0; i < array.length; i++) {
    string = string.replace(array[i], '');
}

console.info(string);

Другие вопросы по теме