Как использовать несколько методов в JavaScript одновременно

javascript #arrays #vue.js #ecmascript-6

#javascript #массивы #vue.js #ecmascript-6

Вопрос:

У меня есть вход, где вы можете искать определенный курс по его названию, для этого я использую фильтрацию, а также includes() метод, моя проблема в том, что мне нужно применить три метода одновременно, первый метод toLowerCase() , второй toUpperCase() и последний метод trim()

 GetMyCourses() {
  return this.courses.filter(value => {
    return value.title.toLowerCase().includes(this.result);
  });
},
 

Если вы оставите toLowerCase метод, то он не выдает заглавные имена при поиске, и наоборот, кроме того, если вы удалите эти два метода, то при поиске вам нужно будет точно искать слово

Комментарии:

1. Вы могли бы сделать это с помощью array some , но здесь вам это, конечно, не нужно. Это похоже на ответ

2. Как использовать несколько методов в JavaScript одновременно используйте регулярное выражение, .filter(value => new RegExp(search, "i").test(value.title)) , search будучи чем-то, что вы сделали безопасным или построили из некоторой логики playcode.io/823069

Ответ №1:

this.result Также преобразуйте в нижний регистр.

 GetMyCourses() {
  let result = this.result.toLowerCase()
  return this.courses.filter(value => {
    return value.title.toLowerCase().includes(result);
  });
},
 

Комментарии:

1. Или просто value.title.toLowerCase().includes(this.result.toLowerCase())

2. @HereticMonkey Да, но это преобразует this.result несколько раз без необходимости.

3. В 99% случаев это не будет проблемой. Если вы хотите микрооптимизировать, у вас должно быть value.searchableTitle свойство, которое уже имеет нижний регистр…

4. Мне также нравится делать это просто для того, чтобы выражение было менее сложным.