javascript - 过滤掉递归目录路径

标签 javascript node.js filesystems

给定一个文件数组,如何过滤掉其他路径的子路径?

示例:

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/

相关文章:

javascript - 两个箭头在圆圈内旋转

node.js - Next Start 不起作用 - 无法找到 index.js 并抛出找不到模块错误

javascript - promise 链接 : Adding an error handler when creating a Promise vs adding to a variable with a promise

node.js - 根据生产和开发更改package.json文件的依赖关系

java - 如何在亚马逊S3存储桶中创建新文件夹?

mysql - MySQL 使用什么文件系统?

javascript - 如何打破 SIGTERM 上的异步系列?

javascript - 通过单击相同的链接更改 div

javascript - 使用 Javascript 自动填充 PDF 字段,其值为另一个字段的 110%

windows - 如何将自定义文件系统添加到 Window 的格式数据对话框的列表中?