JavaScript 方法从字符串/数字中删除不区分大小写的重复项

标签 javascript ecmascript-6

寻找一种干净的方法来删除重复项并保留第一次出现的重复数字/字母

假设我有一个字符串

AbCyTtaCc113

我想要剩下的是

AbCyT13

最佳答案

  [...input].filter((s => c => !s.has(c.toLowerCase()) && s.add(c.toLowerCase()))(new Set)).join("")

使用 Set 扩展字符串会生成一个包含一个字符串的数组。您可以轻松过滤掉重复项。逻辑基本上是:

  • 通过展开字符串将其转换为字符数组 ([...input])。

  • 创建一个 Set 并将其存储在闭包内作为 s。 ((s => ...)(新集))

  • 过滤掉以下字符

    • 该 Angular 色已在集合中 (!s.has(c.toLowerCase())

    • 如果不是,则将其添加到 Set 中并保留它 (&& s.add(c.toLowerCase()))

  • 通过连接将过滤后的数组转回字符串。

或者不区分大小写的版本:

[...new Set(input)].join("")
<小时/>

命令式版本是:

  let result = "";
  {
     const duplicates = new Set();
     for(const char of input) {
        if(!duplicates.has(char.toLowerCase()) {
          duplicates.add(char.toLowerCase());
          result += char;
        }
     }
  }

关于JavaScript 方法从字符串/数字中删除不区分大小写的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048968/

相关文章:

javascript - 有条件地传播 props 并收到有关 props 丢失的 TS 错误

javascript - React意外调用函数

javascript - 脚本标签中的 JS 对象是否安全?

javascript - for 循环无法在 React 组件内的函数中工作

javascript - 使用 babel 为 React 应用程序转译 jsx

javascript - iDevice浏览器,更改选择菜单内容

javascript - onclick下载函数是空字符串?

javascript - 在javascript中将数字格式化为金钱字符串?

javascript - 从对象数组中获取具有更多属性的对象

javascript - 如何通过jquery通配符搜索数据属性的精确包含值?