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. Мне также нравится делать это просто для того, чтобы выражение было менее сложным.