【问题标题】:How to delete characters that appear more than once in a string如何删除字符串中多次出现的字符
【发布时间】:2019-05-22 13:54:34
【问题描述】:
for(var i=0; i <array.length;i++){
    for(var j=1; j<=array.length;j++) 
    if(array[i]==array[j])  array.splice(j,1)
}

一直在尝试使用上面的代码,但它只是删除了所有其他字符。

【问题讨论】:

  • 你匹配的是同一个字符,删除之前确保 j != to i

标签: javascript


【解决方案1】:

我的方法是将其转换为Set,然后转换为Array,然后再转换为join,以获取最终的Stirng

let a = 'aaabbbcdddd';
console.log(Array.from(new Set(a)).join(''));

【讨论】:

    【解决方案2】:

    利用Set 的唯一性属性使用joinSpread syntax (...) 的简单方法

    let a = 'aaabbbcdddd';
    console.log([...new Set(a)].join(''));

    Set 对象允许您存储任何类型的唯一值

    我们提供字符串(可迭代)来启动Set,这将删除其中的所有重复项。然后我们将其转换回带有Spread syntax (...) 的数组。最后,join 将数组重新组合在一起,使其成为一个字符串。

    【讨论】:

    • 我比我自己的答案更喜欢这个。我真的需要记住那些花哨的 js 语法。虽然只是一个指针。 set 构造函数接受一个可迭代对象,String 已经是一个可迭代对象。你不需要传播它。
    • 伟大的收获@AmitDas!它只是将答案减少了一半!
    【解决方案3】:

    您的迭代器 ij 将错误地重叠。您应该改为在i+1 开始您的j 迭代。

    let str = 'the hippos are singing';
    let array = [...str];
    for (var i = 0; i < array.length; i++) {
      for (var j = i + 1; j <= array.length; j++)
        if (array[i] === array[j])
          array.splice(j, 1)
    }
    console.log(array.join(''));

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2021-04-21
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多