我已经阅读了有关堆栈溢出的其他内容,但到目前为止,没有任何工作或者可能我不理解它们。
我希望用户能够在字段中键入一个值,这会查看数组中的每个项目,然后返回匹配的项目。
这是数组的示例。
[{
"ID": 249,
"SetNumber": 7993,
"URL": "https://www.lego.com/biassets/bi/4516696.pdf",
"Images": "https://www.lego.com/biassets/biimg/4516696.png",
"Description": "Service Station",
"Notes": "BUILD.INSTR.3006, 7993 NA 2/2",
"DashedNumber": "7993-1"
},
{
"ID": 250,
"SetNumber": 7994,
"URL": "https://www.lego.com/biassets/bi/4516447.pdf",
"Images": "https://www.lego.com/biassets/biimg/4516447.png",
"Description": "LEGO City Harbor",
"Notes": "BUILD.INSTR.3006, 7994 2/3",
"DashedNumber": "7994-1"
},
{
"ID": 251,
"SetNumber": 7994,
"URL": "https://www.lego.com/biassets/bi/4516451.pdf",
"Images": "https://www.lego.com/biassets/biimg/4516451.png",
"Description": "LEGO City Harbor",
"Notes": "BUILD.INSTR.3006, 7994 3/3",
"DashedNumber": "7994-1"
}]
因此,客户端可以输入 Lego,然后会显示后两个。
这是我到目前为止的代码
$(document).ready(function () {
$('#search-now').click(function () {
var newArray = obj.results.filter(function (el) {
return el.ID &&
el.SetNumber &&
el.Images &&
el.URL &&
el.Description == $('#dynamId').val() &&
el.Notes &&
el.DashedNumber;
});
但这仅返回精确匹配,而不是“类似”匹配。
最佳答案
您可以通过执行以下操作来解决此问题
el.Description.toLowerCase().indexOf($('#dynamId').val().toLowerCase()) !== -1
IndexOf 扫描字符串并返回找到匹配项的索引。将所有内容都小写,以便搜索合适。
关于针对数组的 Javascript "like"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070817/