如何在JavaScript中过滤数组内包含指定字符串标签的所有对象
标签匹配筛选实现方案
需求说明
你需要从存储了标签字段的对象数组中,筛选出所有标签字段包含指定搜索标签的对应对象。
示例输入数组如下:
[ {"tags": ["a"]}, {"tags": ["a","b"]}, {"tags": ["a","c"]}, {"tags": ["a","b","c"]}, {"tags": ["a","d"]} ]
预期筛选结果:
- 搜索
"a"时返回全部5个对象 - 搜索
"b"时返回2个符合条件的对象 - 搜索
"c"时返回2个符合条件的对象
注:你给出的预期结果中标注搜索"b"返回索引1和4属于笔误,实际符合条件的是索引1和索引3的对象
实现代码
JavaScript 版本
// 参数说明:arr 是待筛选的标签对象数组,targetTag 是要搜索的目标标签 function filterByTag(arr, targetTag) { return arr.filter(item => item.tags.includes(targetTag)) } // 调用示例 const tagArr = [ {"tags": ["a"]}, {"tags": ["a","b"]}, {"tags": ["a","c"]}, {"tags": ["a","b","c"]}, {"tags": ["a","d"]} ] console.log(filterByTag(tagArr, 'b')) // 输出符合要求的2个对象
Python 版本
# 参数说明:arr 是待筛选的标签对象数组,target_tag 是要搜索的目标标签 def filter_by_tag(arr, target_tag): return [item for item in arr if target_tag in item['tags']] # 调用示例 tag_arr = [ {"tags": ["a"]}, {"tags": ["a","b"]}, {"tags": ["a","c"]}, {"tags": ["a","b","c"]}, {"tags": ["a","d"]} ] print(filter_by_tag(tag_arr, 'c')) // 输出符合要求的2个对象
逻辑说明
核心逻辑是遍历数组的每一个元素,校验当前元素的tags属性中是否包含目标搜索标签,保留所有符合校验条件的元素即可。实现方案时间复杂度为O(n*m),其中n是数组总长度,m是单条记录的标签数量,适用于常规小体量数据场景。
内容的提问来源于stack exchange,提问作者Nagasai M
相关产品推荐
相关产品推荐

