1

我用以下示例数组计数

let animals = ['dog', 'cat', 'egypt cat', 'fish', 'golden fish'] 

基本思想是得到以下结果,删除其他字符串中包含的元素

['dog', 'egypt cat', 'golden fish'] 

我的方法是检测哪些包括在数组上迭代两次并比较值

let arr2 = []
arr.forEach((el, i) => {
    arr.forEach((sub_el, z) => {
        if (i != z && sub_el.includes(el)) {
          arr2.push(el)
        }
      })
    })

然后用那些匹配的值过滤数组。有人有最简单的解决方案吗?

4

1 回答 1

1

您需要再次迭代数组,然后检查任何字符串。

这种方法通过在找到匹配字符串时短路来最小化迭代。

let animals = ['dog', 'cat', 'egypt cat', 'fish', 'golden fish'],
    result = animals.filter((s, i, a) => !a.some((t, j) => i !== j && t.includes(s)));

console.log(result);

于 2020-09-28T14:39:49.443 回答