给定一个文件数组,如何过滤掉其他路径的子路径?
示例:
var pathList = [
"/foo/bar/fooBar",
"/foo/bar",
"/foo"
];
对函数 parentPaths(pathList)
的调用应返回一个包含一个元素 "/foo"
的数组,因为两个 "/foo/bar"
code> 和 "/foo/bar/fooBar"
是 "/foo"
的子级。
编辑 1:
函数 parentPaths(pathList)
应该返回每个唯一的路径或者是一个或多个路径的父路径。
更精确的例子是:
var pathList = [
"/foo/bar/foobar/foobar/foobar",
"/foo/bar/foobar/foobar",
"/foo/bar/foobar",
"/foo/bar2"
];
其中 parentPaths(pathList)
将返回 ["/foo/bar/foobar", "/foo/bar2"]
。
最佳答案
您可以按长度升序对数组进行排序,并检查字符串是否与存储的字符串匹配。
如果不匹配,则将其添加到结果集中。
var pathList = ["/foo/bar/fooBar", "/foo/bar", "/foo", "/bb", "/bb/a"],
result = pathList
.sort((a, b) => a.length - b.length)
.reduce((r, s) => {
if (!r.some(t => s.startsWith(t))) r.push(s);
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 过滤掉递归目录路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59194580/