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

JavaScript如何检查数组项name匹配并返回符合条件的配置对象

实现方案

核心校验规则:

  • 校验override的facets数组长度与selected数组长度一致,直接排除包含多余facet的对象
  • 校验每个selected的facet都能在override的facets中找到匹配:name属性完全相等,且selected的value属于对应facet的values数组范围

如果只需要获取第一个匹配的对象,将下方代码的filter方法替换为find即可。

完整实现代码

const selected = [{
    name: 'Colour group',
    value: 'White',
}, {
    name: 'Style',
    value: 'Cream',
}];

const overrides = [{
    facets: [{
    name: "Colour group",
    values: ["White"]
  }]
}, {
    facets: [{
    test: 'name',
    name: "Colour group",
    values: ["White", "Cream"],
  }]
}, {
    facets: [{
    test: 'name',
    name: "Colour group",
    values: ["White", "test"],
  }]
}, {
    facets: [{
    name: "Colour group",
    values: ["White"]
  }, {
    name: "Style",
    values: ["Cream"]
  }]
}, {
    facets: [{
    name: "Colour group",
    values: ["White"]
  }, {
    name: "Range",
    values: ["Cream"]
  }]
}];

// 把selected转成Map提高查找效率
const selectedMap = new Map(selected.map(item => [item.name, item.value]))
const selectedCount = selected.length

const result = overrides.filter(override => {
  const { facets } = override
  // 首先校验长度一致,排除多facet的情况
  if (facets.length !== selectedCount) return false
  // 校验所有facet均匹配
  return facets.every(facet => {
    const targetValue = selectedMap.get(facet.name)
    return targetValue !== undefined && facet.values.includes(targetValue)
  })
})

console.log(result)
/* 输出
[{
  facets: [
    { name: 'Colour group', values: [ 'White' ] },
    { name: 'Style', values: [ 'Cream' ] }
  ]
}]
*/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:06:04