【发布时间】:2019-10-11 18:56:13
【问题描述】:
我有一个元素数组(比如说健身训练列表)。
我有一个搜索栏,我想创建一个搜索功能来查找特定培训。
我知道如何将数组过滤为:
-
保持名称以在搜索栏中输入的字符串
开头的训练array = array.filter(function(item) { return item.name.toLowerCase().startsWith(searchFilter.toLowerCase()); });
示例:搜索 = "El"...
结果 ->
["Elizabeth", "Elisa"]未获取结果 ->
["Open Elios"]
-
在名称包含在搜索栏中输入的字符串
的地方继续训练array = _.filter(array, function(item) { return _.includes(item.name.toLowerCase(), searchFilter.toLowerCase()); });
示例:搜索 = "El"...
结果 ->
["Elizabeth", "Open Elios", "Camel"]
但这不是我想要的:
- 继续训练 name 包含以 在搜索栏中输入的字符串开头的单词
示例:搜索 = "El"...
结果 ->
["Elizabeth", "Open Elios"]未获取结果 ->
["Camel"]
【问题讨论】:
-
第一个和第三个有什么区别?
-
@adiga first: 1st = 如果字符串包含多个单词,则搜索只关注第一个单词。 3rd = 如果一个字符串包含多个单词,则搜索所关注的所有单词
-
@KevinB 你希望像
hello-el这样的值包含在过滤结果中吗? -
不是特别好,只有空间大
-
@CodeManiac 虽然不是很清楚,但我认为 OP 希望他提到
name contains words starting with string typed in the search bar。
标签: javascript arrays search filter lodash