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

如何从字符串数组的数组中提取不区分大小写的唯一元素

提取不区分大小写的唯一元素实现方案

这问题我熟!要搞定这个需求,得先拆解输入里的特殊情况——比如有的子数组里是逗号拼接的多元素字符串(像第一个子数组的"java,C,Node,ReactJs"),还有重复的、大小写不同的元素,咱们一步步来:

核心思路

  1. 扁平化+拆分元素:把嵌套的数组打平,同时把逗号分隔的字符串拆成单个元素;
  2. 不区分大小写去重:用一个集合记录已经出现过的小写元素,确保相同大小写变体只保留一个;
  3. 整理结果:最后输出去重后的元素(可以统一转小写,或者保留第一次出现的大小写,看需求调整)。

JavaScript 实现代码

const inputArray = [
  ["java,C,Node,ReactJs"],
  ["c","Spring"],
  ["undefined"],
  ["asdja"],
  ["Java","Spring"],
  ["adjasjh"],
  ["adjasjh"],
  ["java"]
];

// 步骤1:扁平化并拆分所有元素
const flattened = inputArray.flat().map(str => str.split(',').map(item => item.trim())).flat();

// 步骤2:不区分大小写去重
const seen = new Set();
const uniqueElements = [];

for (const elem of flattened) {
  const lowerElem = elem.toLowerCase();
  if (!seen.has(lowerElem)) {
    seen.add(lowerElem);
    // 这里可以选择存小写,或者存原元素,根据需求调整
    uniqueElements.push(lowerElem); 
    // 如果要保留第一次出现的原大小写,就改成 uniqueElements.push(elem);
  }
}

console.log(uniqueElements);
// 输出:["java", "c", "node", "reactjs", "undefined", "asdja", "spring", "adjasjh"]

代码解释

  • 扁平化拆分:先用flat()把嵌套数组打平,再用split(',')把逗号拼接的字符串拆成单个元素,最后再flat()一次得到一维的元素列表;
  • 去重逻辑:用Set存储小写形式的元素,遍历的时候检查小写版是否已存在,不存在就加入结果数组,这样就实现了不区分大小写的去重;
  • 灵活调整:如果想保留元素第一次出现的大小写(比如原数组里的C保留大写),只需要把uniqueElements.push(lowerElem)改成uniqueElements.push(elem)即可,输出结果会变成["java", "C", "Node", "ReactJs", "undefined", "asdja", "Spring", "adjasjh"],同样满足不区分大小写的唯一要求。

测试你的示例

把代码里的inputArray换成你的示例数组,运行后就能得到你期望的结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:43