从Javascript数组中提取具有唯一字符的字符串

3
我希望提取仅包含唯一字符的字符串,我有一个字符串数组:
```html

我希望提取仅包含唯一字符的字符串,我有一个字符串数组:

```
var arr = ["abb", "abc", "abcdb", "aea", "bbb", "ego"];
Output: ["abc", "ego"]

我尝试使用Array.forEach()方法来实现:

var arr = ["abb", "abc", "abcdb", "aea", "bbb", "ego"];
const filterUnique = (arr) => {
  var result = [];
  arr.forEach(element => {
    for (let i = 0; i <= element.length; i++) {
      var a = element[i];
      if (element.indexOf(a, i + 1) > -1) {
        return false;
      }
    }
    result.push(element);
  });
  return result;
}
console.log(filterUnique(arr));

想知道是否有其他方法来完成这个任务?

有什么建议吗?

2个回答

7

我会按照字符串集合的长度是否与字符串本身长度相等来使用.filter过滤:

const filterUnique = arr => arr
  .filter(str => new Set(str).size === str.length);
console.log(filterUnique(["abb", "abc", "abcdb", "aea", "bbb", "ego"]));

(Set 不会包含重复的元素,比如说,如果把4个元素放到一个Set里,其中有2个是其他元素的副本,那么Set的大小将为2。)

2
你可以通过将字符串转换为集合来进行检查,Set对象始终具有唯一的值。

var a = ["abb", "abc", "abcdb", "aea", "bbb", "ego"];

console.log(a.filter(v => v.length === new Set(v).size))


我不知道Set会将字符串分解,谢谢你指出。 - Akash Shrivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接