darakanoit
@darakanoit

Вырезать из строки все слова имеющиеся в массиве при помощи replace, но что-то идёт не так?

search_null() {
            var str = this.search;
            this.brands.forEach(function(item) {
                let re = new RegExp(item.name, 'g');
                str.replace(re,' ');
                console.log(re)
                console.log(str)
            });
            this.search = str;
        },

Имеется такой метод во vue.js.
В this.search лежит поисковая строка,а в this.brands.name наименование бренда.
Проходясь массивом хочу убрать все их наименование из поисковой строки.
Но не отрабатывает.
Console.log выводит,что регулярка составлена,но не удаляет слово из строки. Что я делаю не так?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 2
@bqio
https://bqio.github.io/
Функция replace возвращает изменённую строку.
str = str.replace(re,' ');
Ответ написан
Комментировать
zendor
@zendor
Можно так:
search_null() {
  this.search = this.search.replace(RegExp(this.brands.map(o => o.name).join('|'), 'gi'), ' ');
}

А конкретно в вашем примере, вы присваивание забыли, т.к. строки иммутабельны и replace возвращает новую строку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы