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

Vue/Lodash场景下如何通过一个数组的取值过滤匹配另一数组?

数组全包含关系过滤实现

你需要的核心逻辑是判断筛选数组的所有元素都被目标数组包含,可通过Array.every()方法实现,正确代码如下:

场景1:results为产品列表数组

const filteredProducts = this.results.filter(result => {
  return this.allergenFilter.every(filterTag => result.allergens.includes(filterTag))
})

场景2:results为对象结构(键为产品ID,值为产品信息)

需要先把对象转为数组再执行过滤:

const productList = Object.values(this.results)
const filteredProducts = productList.filter(result => {
  return this.allergenFilter.every(filterTag => result.allergens.includes(filterTag))
})

逻辑说明

  • Array.every()会遍历数组所有元素,只有所有元素都满足判定条件时才返回true
  • 上述代码会逐一校验所有选中的过敏原标签,确认都存在于当前产品的过敏原标签数组中,全部匹配才会保留该产品
  • 当allergenFilter为空(未选中任何筛选项)时,every()默认返回true,会返回全量产品,符合无筛选条件时的常规业务需求

扩展适配

如果业务需求调整为「只要匹配任意一个选中的过敏原标签就保留产品」,把every替换为Array.some()即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:30:06