首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Underscore.js筛选器未返回所有结果

Underscore.js筛选器未返回所有结果
EN

Stack Overflow用户
提问于 2013-03-25 14:15:28
回答 1查看 360关注 0票数 1

我正在尝试构建一个过滤函数,它的工作方式类似于自动补全字段的工作方式。我正在使用Underscore.js过滤一个名称数组。下面是一个演示该问题的JSFiddle:

http://jsfiddle.net/PWcVM/

对于那些不愿跳转到JSFiddle的人,这里有一个纯文本的示例。

HTML:

代码语言:javascript
复制
<p>Type the name 'Craig' into the text field</p>
<input class="query" type="text" />
<p>There are 4 Craig's in the data array. The results below should output those 4 Craigs. For some reason, it only outputs two.</p>
<p>Results:</p>
<textarea class="results" style="width: 300px; height: 300px;"></textarea>

JavaScript:

代码语言:javascript
复制
var data = ["Aaron Abram", "Abbie Hanson", "Abraham Vázquez", "Ace Marrero", "Adam D. Chaitin", "Adam Duzey", "Adam Reichental", "Adam Scott", "Adam Smythe", "Addison McCaleb", "Ahmad Childress", "Aidas Petrulis", "Aldo Nievas", "Alex Alexapolsky", "Alexander R. Lampone", "Alexandra Elizabeth London", "Alexandra Jacobs", "Alexis Jones", "Allan Louis", "Allie Tintle", "Alyssa Wada", "Amanda Armstrong", "Amanda Olmstead", "Amber Fox", "Amber Graves", "Amy Berkin-Chavez", "Amy Buggy", "Amy Rush", "Amy Schlumberger", "Andi Dzilums", "Andre Savage", "Andrew Fryer", "Andrew Rivetty", "Angel Chavez", "Angel Lewis", "Angela Truong", "Anthony Wentzel", "Anya Estrov", "Aram Homampour", "Ariana Blumenfeld-James", "Armo Movsessian", "Ashley DeMeza", "Ashley Froschauer", "Athena Asklipiadis", "Athena Stamos", "Audryn Swigert", "Augie Sanchez", "Avi Horn", "Bali Ciri Yoman", "Bali Distinction Norman", "Barnaby Hitzig", "Betty Tran Chillino", "Bill McGovern", "Blues Bob", "Bob Cribbs", "Bob West", "Bobby DiGiacomo", "Borivoj Ivanovic", "Brad Horwitz", "Brad Ormand", "Bradley F. Cole", "Brandon Jordan", "Brandon Kosoko", "Brent Nelson", "Brett Vadset", "Brian Kubat", "Bridget Betts", "Brock Winberg", "Bryan C Dickson", "Caleb Bacon", "Carlos Carreras", "Carlos Castro", "Carlos Chávez", "Caryn Saxena", "Celina Chavanette", "Ceren Güven", "Chad Buechler", "Charles Winemiller", "Charlie Diaz", "Cheri Kingsley", "Chloe Sherman-Pepe", "Chris Hackett", "Chris Han", "Chris Laughter", "Chris Mabli", "Chris McGarry", "Chris Scott", "Chris Ueland", "Christelle Penalosa", "Christine Is Lovely", "Clark McCutchen", "Colleen Steckloff Mayo", "Cory J Thomas", "Craig Adams", "Craig Duro", "Craig Fredrics", "Craig Phelps", "Curt Bonnem", "Dalilah Rain", "Damien Nemire-Pepe"];

_.each(data, function (name) {
    $('textarea.results').val($('textarea.results').val() + name + "\n");
});

$('input.query').bind('input', function (event) {
    var pattern = new RegExp($(event.currentTarget).val(), 'gim'),
        filteredResults = _.filter(data, function (name) {
            return pattern.test(name)
        });

    $('textarea.results').val('');

    _.each(filteredResults, function (name) {
        $('textarea.results').val($('textarea.results').val() + name + "\n");
    });
});

我得到了一些结果,但并不是所有应该返回的结果。

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-25 14:26:20

如果你能从RegExp中去掉全局标志,这应该是可行的。

代码语言:javascript
复制
var pattern = new RegExp($(event.currentTarget).val(), 'im');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15608747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档