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

jQuery使用indexOf匹配下拉框选中值筛选对象键返回空数组如何解决

错误原因

你代码的核心问题是逻辑方向错误:

  • ParentBrandKeys本身就是筛选后符合品牌要求的Brand对象的键名(比如Brand1-Parameter1-SubBrand1这类字符串),你需要判断的是这个键名字符串是否包含选中的Parameter,而不是去取Brand[key]的键。Brand[key]是存储SubBrand信息的数组,它的键是数字索引,自然检索不到Parameter相关内容,所以返回空数组。
  • 额外隐患:你把#Parameter的change事件绑定在了#ParentBrand的change回调里,每次切换品牌都会重复绑定事件,会导致后续触发change时逻辑重复执行多次。

修正后的完整代码

jQuery(document).ready(function($) {
  var Brand = {
    "Brand1-Parameter1-SubBrand1": [{
      "Image": "animal",
      "Heading": "SubBrand1",
      "Link": "SubBrand1"
    }],
    "Brand1-Parameter1-SubBrand2": [{
      "Image": "animal",
      "Heading": "SubBrand2",
      "Link": "SubBrand2"
    }],
    "Brand1-Parameter2-SubBrand3": [{
      "Image": "water",
      "Heading": "SubBrand3",
      "Link": "SubBrand3"
    }],
    "Brand1-Parameter2-SubBrand4": [{
      "Image": "water",
      "Heading": "SubBrand4",
      "Link": "SubBrand4"
    }],
    "Brand2-Parameter1-SubBrand5": [{
      "Image": "travel",
      "Heading": "SubBrand5",
      "Link": "SubBrand5"
    }],
    "Brand2-Parameter1-SubBrand6": [{
      "Image": "travel",
      "Heading": "SubBrand6",
      "Link": "SubBrand6"
    }],
    "Brand2-Parameter2-SubBrand7": [{
      "Image": "flower",
      "Heading": "SubBrand7",
      "Link": "SubBrand7"
    }],
    "Brand2-Parameter2-SubBrand8": [{
      "Image": "flower",
      "Heading": "SubBrand8",
      "Link": "SubBrand8"
    }],
  }
  // 外层存储选中的品牌值,两个下拉框事件独立绑定避免重复绑定
  let selectedBrand = ''
  $("#ParentBrand").on('change', function() {
    selectedBrand = $(this).val();
    $("#Parameter").val(null).trigger('change');
  });
  $("#Parameter").on('change', function() {
    const selectedParam = $(this).val()
    if (!selectedBrand || !selectedParam) return
    // 直接筛选同时匹配品牌前缀、包含参数的键
    const matchedKeys = Object.keys(Brand)
      .filter(key => key.startsWith(selectedBrand) && key.includes(selectedParam))
    console.log('匹配的键:', matchedKeys)
    // 如果需要直接获取对应SubBrand数据,使用下方代码即可
    const matchedSubBrands = matchedKeys.map(key => Brand[key][0])
    console.log('匹配的SubBrand数据:', matchedSubBrands)
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:33:03