我有一个像这样的数组
[".a",".acc",".as",".b",".bad",".ca",".cat"]
这些数组元素应该在长字符串中搜索。
fire consumed his plane. AAC was required to have two persons. A third employee who was present at the airport. As a result, Richard was unable to escape
因此,当它搜索 ".acc"
时,它只找到一个结果。但当它搜索 ".a"
时,它会找到三个结果。现在结果重复了,这就造成了麻烦。
我想要某种方法从该数组中删除元素 ".acc"
和 ".as"
并将 "a"
保留在数组,这样我就只能搜索 ".a"
它是数组元素之间的某种交集。但我无法找到解决此问题的直接解决方案。
Summery:我在数组中有三个具有相同起始字符(.a) 的项目。我想保留长度最小的项目并删除其他两个。
最佳答案
这将使用原始数组中的非重叠字符串填充 z
:
let z = [];
let cur;
['.a', '.acc', '.as', '.b', '.bad', '.ca', '.cat'].sort().forEach((x) => {
if (!x.startsWith(cur)) {
z.push(x);
cur = x
}
})
(仅当原始数组并不总是已排序时才需要 sort()
调用。)
关于javascript - 查找单个数组元素之间的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179709/