You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用多关键词过滤含tags字段的对象数组(需全匹配)?

多关键词同时匹配的数组过滤实现

现有代码背景

我们有一个宠物对象数组:

const pets = [
    {name: "Dog", tags: "ground, pet, active"},
    {name: "Cat", tags: "ground, pet, relaxed"},
    {name: "Fish", tags: "water, pet, exotic"},
] 

目前已经实现了单个关键词的过滤逻辑,比如搜索"ground":

const search = "ground"
const result = pets.filter((pet) => pet.tags.includes(search)) 

输出结果为:

[
  { name: 'Dog', tags: 'ground, pet, active' },
  { name: 'Cat', tags: 'ground, pet, relaxed' }
]

需求说明

现在需要实现多关键词数组(比如const search = ["ground", "active"])的过滤,要求仅筛选出tags字段同时包含所有关键词的对象(预期只匹配Dog项)。

实现方案

可以结合Array.every()方法,确保每个关键词都能在当前宠物的tags中找到:

基础实现

const search = ["ground", "active"];
const result = pets.filter(pet => {
  return search.every(keyword => pet.tags.includes(keyword));
});

执行后输出结果:

[ { name: 'Dog', tags: 'ground, pet, active' } ]

优化建议(可选)

如果担心关键词的匹配精度(比如关键词是"round"时,可能误匹配包含"ground"的字符串),可以先把tags拆分成数组,再用includes匹配:

const search = ["ground", "active"];
const result = pets.filter(pet => {
  const petTags = pet.tags.split(', '); // 按逗号加空格拆分标签数组
  return search.every(keyword => petTags.includes(keyword));
});

这种方式能避免部分字符串的误匹配问题,比如如果有宠物标签是"grounded",不会被关键词"ground"误匹配。


内容的提问来源于stack exchange,提问作者DC37

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:34:51