Javascript 在对象数组上进行客户端全文搜索
我有下面的JavaScript对象数组示例,需要使用户能够使用单词/短语搜索,并返回对象:Javascript 在对象数组上进行客户端全文搜索,javascript,jquery,arrays,full-text-search,Javascript,Jquery,Arrays,Full Text Search,我有下面的JavaScript对象数组示例,需要使用户能够使用单词/短语搜索,并返回对象: var items = []; var obj = { index: 1, content: "This is a sample text to search." }; items.push(obj); obj = { index: 2, content: "Here's another sample text to search." }; items.push(obj);
var items = [];
var obj = {
index: 1,
content: "This is a sample text to search."
};
items.push(obj);
obj = {
index: 2,
content: "Here's another sample text to search."
};
items.push(obj);
使用jQuery的$.grep
执行搜索可能会很有效,例如对单个单词执行以下搜索:
var keyword = "Here";
var results = $.grep(items, function (e) {
return e.content.indexOf(keyword) != -1;
});
但是,如何在对象的content
字段中搜索短语?例如,使用indexOf
搜索短语另一个文本将不起作用,因为这两个单词不相邻。在jQuery中执行此搜索的有效方法是什么?如果使用,您可以这样做
var words = phrase.split(' ');
items.where(function(e){
return words.aggregate(function(state, w){
return state && e.content.indexOf(w) >= 0;
});
},true);
如果它应该至少匹配一个,则将&&
更改为|
并将true
更改为false
如果卡住了,可以使用vanilla JS。它确实使用并且在较旧的浏览器中不起作用,但是有可用的多边形填充
var项目=[];
var obj={
索引:1,
内容:“这是要搜索的示例文本。”
};
项目推送(obj);
obj={
索引:2,
内容:“这里是另一个要搜索的示例文本。”
};
项目推送(obj);
函数查找(项目、文本){
text=text.split(“”);
返回项目。过滤器(函数(项目){
返回文本。每个(函数(el){
返回项.content.indexOf(el)>-1;
});
});
}
log(find(items,'text'))//两个对象
log(查找(项,'other'))//对象2
log(查找(项,'other text'))//对象2
console.log(find(items,'is text')//对象1
如何:contains
?谢谢,@GuruprasadRao。:contains
是否考虑到短语单词不必是连续的,但可以在文本中的任何位置?是的!!查看更多详细信息谢谢@RuneFS。很不错的。该链接要求我登录Wordpress博客。到GitHub的链接已断开:。我可以在哪里下载JS库?它应该在哪里,或者您可以通过npm安装查询JS进行安装