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

JavaScript数组去重及特殊字符清理问题技术求助

解决方案

可以通过以下步骤优化代码,实现清理单引号、处理|分隔符并最终保留唯一值的需求:

// 1. 提取所有非空的thedate字段,并先做一次初始去重
const rawDateEntries = this.results
  .filter(result => result.thedate)
  .map(item => item.thedate)
  .filter((date, index, arr) => arr.indexOf(date) === index);

// 2. 处理每个日期字符串:清理单引号、拆分|分隔符、去重内部值、拼接成规范格式
const processedDates = rawDateEntries.map(dateStr => {
  // 移除首尾的单引号
  const cleanedWithoutQuotes = dateStr.replace(/^'|'$/g, '');
  // 按|分割成数组,用Set快速去重,再转回数组
  const uniqueInnerValues = [...new Set(cleanedWithoutQuotes.split('|'))];
  // 将去重后的数组转为逗号分隔的字符串
  return uniqueInnerValues.join(', ');
});

// 3. 对最终处理后的数组再次去重,得到结果
this.thedates = [...new Set(processedDates)].sort();

关键逻辑说明:

  • 清理单引号:使用正则/^'|'$/g匹配并移除字符串首尾的单引号
  • 处理|分隔符:将每个字符串按|分割为数组,通过Set自动去重内部重复值
  • 格式统一:把去重后的内部值用, 拼接成规范字符串
  • 高效去重:全程使用Set和数组原生方法替代多次indexOf判断,性能更优

测试你给出的输入内容,最终会输出:['full-time', 'full-time, part-time'],完全符合期望格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:36:18