如何在underscore.js中返回部分匹配数组

Jed*_*iah 4 javascript underscore.js

我正在尝试使用userscore在jQuery UI中执行与自动完成小部件类似的操作.我尝试过使用过_.where(),但这只有在完全匹配时才有效.

这有效:

var people = [
    { id: 1, name: "Jimmy" },
    { id: 2, name: "Johnny" },
    { id: 3, name: "Susan" },
    { id: 4, name: "Tim" },
    { id: 5, name: "Betty" },
    { id: 6, name: "Ralph" }
];
var filteredPeople = _.where(people, { name: "Jimmy" });
Run Code Online (Sandbox Code Playgroud)

但我想要的是这样的:

var filteredPeople = _.where(people, { name: "im" });   //Should return "Jimmy" and "Tim"
Run Code Online (Sandbox Code Playgroud)

使用._where不正确的方法?如果没有,那么更好的方法是什么呢?

Ber*_*rgi 7

使用._where不正确的方法?

是._.where返回" 包含列出的所有键值对的值 ".这种完全匹配不是你想要的.

什么是更好的方法来解决这个问题?

使用更通用的_.filter功能:

var filteredPeople = _.filter(people, function(person) {
    return person.name.indexOf("im") > -1;
});
Run Code Online (Sandbox Code Playgroud)

当然,你可以使用不同的东西indexOf.如果您想使用正则表达式,它可能如下所示:

return /im/.test(person.name);
Run Code Online (Sandbox Code Playgroud)