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

如何处理API返回的逗号分隔JSON数据,生成绑定对应ID的去重下拉菜单

解决思路

你需要同步存储市场名称和对应ID的映射关系,不能只单独存市场名称数组。我们可以用对象做天然去重(对象的键具备唯一性),遍历API返回数据时同步配对市场名和ID,最后遍历映射关系生成带正确value的option即可。

修改后代码

$.ajax({
  method: 'GET',
  url: 'http://localhost:9001/api/directory',
}).done(function (data, status, xhr) {
  // 存储市场名和ID的映射,键为市场名自动去重
  const marketMap = {};
  $.each(data, function (index, item) {
    // 拆分市场名和ID数组,同时去除前后空格避免匹配异常
    const marketNames = item.markets.split(',').map(name => name.trim());
    const marketIds = item.market_ids.split(',').map(id => id.trim());
    // 按索引配对市场名和ID
    marketNames.forEach((name, idx) => {
      // 未重复的市场才存入映射
      if (!marketMap[name]) {
        marketMap[name] = marketIds[idx];
      }
    })
  })
  // 生成下拉选项
  Object.entries(marketMap).forEach(([marketName, marketId]) => {
    $(".directory-input.market").append(
      `<option value="${marketId}" class="market-option">${marketName}</option>`
    )
  })
});

注意事项

如果你的业务场景中存在同一个市场名对应不同ID的情况,可以自行调整去重逻辑:当前代码默认保留第一个出现的市场对应的ID,你可以根据需要改成覆盖保留最后出现的ID,只需要去掉if (!marketMap[name])的判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:03