针对数组的 Javascript "like"函数

标签 javascript

我已经阅读了有关堆栈溢出的其他内容,但到目前为止,没有任何工作或者可能我不理解它们。

我希望用户能够在字段中键入一个值,这会查看数组中的每个项目,然后返回匹配的项目。

这是数组的示例。

[{
"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/

相关文章:

javascript - JS : Add easing to moving element

javascript - Chrome 打包应用 : Permission for getUserMedia() audio input

javascript - 如何使终端可滚动?

javascript - 使用 ajax 回调切换两个 id

javascript - Angular 2 能否解析从外部 CMS 接收的链接以解析为内部链接

javascript - 当一个类添加到另一个div中时如何模糊一个div?

javascript - 动画结束时导航到 href

javascript - 如何在簇中制作不同颜色的标记

javascript - 为什么 Javascript 项目将构建的结果检查到 git 中?

javascript - 与 react-select 一起使用的 Material UI 组件重置滚动位置