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

如何在JavaScript和HTML中添加select选项时避免重复元素

纯JS实现支出分类去重并生成唯一选项

步骤1:获取数据并提取去重分类

通过fetch拿到JSON数据后,先提取所有分类字段,利用Set的特性快速去重(Set不允许存储重复值):

fetch('你的支出数据接口地址')
  .then(res => res.json())
  .then(expenseData => {
    // 从每条支出数据里提取分类字段
    const allCategories = expenseData.map(item => item.category);
    // 转成Set去重,再转回数组
    const uniqueCategories = [...new Set(allCategories)];
    // 调用生成选项的函数
    buildCategorySelect(uniqueCategories);
  })
  .catch(err => console.log('数据获取失败:', err));

步骤2:生成唯一分类选项

写自定义函数,把去重后的分类转换成select和option元素,插入到指定label下:

function buildCategorySelect(categories) {
  const categoryLabel = document.getElementById('category');
  
  // 先清空label原有内容,避免重复追加
  categoryLabel.innerHTML = '';
  
  // 创建select元素
  const selectEle = document.createElement('select');
  selectEle.id = 'expense-category'; // 可自定义id/name属性
  
  // 添加默认提示选项
  const defaultOpt = document.createElement('option');
  defaultOpt.value = '';
  defaultOpt.textContent = '请选择支出分类';
  selectEle.appendChild(defaultOpt);
  
  // 遍历去重后的分类生成选项
  categories.forEach(cat => {
    const opt = document.createElement('option');
    opt.value = cat;
    opt.textContent = cat;
    selectEle.appendChild(opt);
  });
  
  // 将select插入到label中
  categoryLabel.appendChild(selectEle);
}

注意点

  • 如果你的支出数据里分类字段不是item.category,记得改成实际的字段名。
  • 每次生成前清空label内容,是为了防止重复调用函数时叠加旧的选项。

内容的提问来源于stack exchange,提问作者A. Holik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:22:01