基于标签的自动完成 JavaScript 数组

Autocomplete based on tags JavaScript array

提问人:Frank 提问时间:7/6/2022 最后编辑:Frank 更新时间:7/6/2022 访问量:73

问:

我正在尝试创建一个普通的 JavaScript 函数,该函数将用户输入与标签数组进行比较并返回最佳匹配项。我创建了一个 JSON 索引,如下所示:

[
    {
        "data-governance": {
            "tags": ["data", "governance"],
            "href": "data-governance.html"
        }
    },
    {
        "data-quality": {
            "tags": ["data", "quality"],
            "href": "data-quality.html"
        }
    }
]

我希望该函数的行为如下:如果用户输入,它应该同时返回数据治理数据质量 href 属性。但是,如果用户输入,则应仅返回 data-governance href 属性。"data""data gov"

我发现了一些例子,其中自动完成是在正则表达式中使用字符串匹配完成的,但没有一个比较字符串数组(即标签)。

希望有人能为我指出正确的方向。

JavaScript 搜索 标签匹配

评论


答:

0赞 Abito Prakash 7/6/2022 #1

你可以做这样的事情,

const data = [
   {
      'data-governance': {
          tags: ['data', 'governance'],
          href: 'data-governance.html',
       },
   },
   {
      'data-quality': {
         tags: ['data', 'quality'],
         href: 'data-quality.html',
      },
   },
];

const findMatches = (items, tag) => {
  return items
     .filter((item) => {
        const { tags } = Object.values(item)[0];
        return tags.includes(tag);
     })
     .map((item) => Object.keys(item)[0]);
};

console.log(findMatches(data, "data"));