首页 > 解决方案 > 从javascript数组中提取具有唯一字符的字符串

问题描述

我只想提取那些具有唯一字符的字符串,我有一个字符串数组:

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));

想知道有没有其他方法可以完成这个任务?

任何建议。

标签: javascriptarraysforeach

解决方案


我会.filter通过字符串 Set 的大小是否与字符串的长度相同:

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

(一个 Set 不会包含重复的元素,因此,例如,如果将 4 个元素放入一个集合中,并且 2 个是其他元素的重复,那么 Set 的结果大小将为 2)


推荐阅读