gpt4 book ai didi

javascript - 对象数组的客户端全文搜索

转载 作者:行者123 更新时间:2023-11-30 07:14:40 25 4
gpt4 key购买 nike

我有以下示例 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);

使用 jQuery 的 $.grep 执行搜索可能很有效,例如搜索单个单词:

var keyword = "Here";
var results = $.grep(items, function (e) {
return e.content.indexOf(keyword) != -1;
});

但是,如何在对象的 content 字段中搜索短语?例如,搜索短语 another text 将无法使用 indexOf,因为这两个词彼此不相邻。在 jQuery 中执行此搜索的有效方法是什么?

最佳答案

如果遇到困难,可以使用 vanilla JS。它确实使用 filterevery这在旧浏览器中不起作用,但有可用的 polyfill。

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);

function find(items, text) {
text = text.split(' ');
return items.filter(item => {
return text.every(el => {
return item.content.includes(el);
});
});
}

console.log(find(items, 'text')) // both objects
console.log(find(items, 'another')) // object 2
console.log(find(items, 'another text')) // object 2
console.log(find(items, 'is text')) // object 1

(编辑:更新为使用 includes 和稍微更短的箭头函数语法)。

关于javascript - 对象数组的客户端全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com