javascript - 如何在一系列数组中搜索特定匹配并显示结果

标签 javascript jquery regex search each

我有一个用户输入的文本字段,然后用它来匹配用户输入的内容与存储变量中的一组字符串。

这是我到目前为止所拥有的:

var sports = ['skateboarding','bmx','surfing','longboarding','snowboarding'];
var interests = ['photography', 'editing', 'film making'];
var hobbies = ['gaming', 'music', 'tv'];

$('#test').bind('input change',function(){
    var search = $(this).val();
    $.each([sports, interests, hobbies], function(index, value){
        $.each(value, function(key, cell){
            if (search.indexOf(cell) != -1){
                $('ul').append('<li>' + value[key] + '</li>');
            }else{

            }
        });
    });
});

作为基础,它可以工作,但只匹配整个单词,而不匹配单词的部分内容。我怎样才能做到这一点,以便匹配单词的任何部分。例如: 如果用户输入 board,它将匹配滑板、长板和滑雪板。

是否有一个简单的方法可以从 ul 列表中删除不再匹配的单词。

我也有一个 JS fiddle :

http://jsfiddle.net/84GM5/1/

最佳答案

您必须对数组中的字符串使用 indexOf 来比较每个字符串,如下所示

$('#test').on('input', function(){
    var val = this.value,
        res = $.grep([].concat(sports, interests, hobbies), function(value) {
            return value.indexOf(val) != -1;
    });

    res = $.trim(val).length > 0 ? res : []; // account for empty value

    $('ul').html( $.map(res, function(val) {
        return $('<li />', {text: val});
    }));
});

FIDDLE

关于javascript - 如何在一系列数组中搜索特定匹配并显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161053/

相关文章:

python - 提取单引号之间的子字符串

java 正则表达式 特殊字符

javascript - 为什么这个 Twitter 脚本标签尝试评估为真?有关系吗?

javascript - 如何通过添加类在td内显示圆圈?

javascript - JQuery 从引导下拉菜单中获取值

javascript - jQuery 或下划线按跨度文本对列表进行排序

javascript - 如何从站点地图生成器中排除网址

javascript - 如何动态删除表格行

javascript - 查看/编辑 html 表单

javascript - Expresso 未安装在 Windows 7 上