从数组中删除父目录

Removing parent directories from array


假设我有这样的文件夹结构:

我有一个包含所有路径的数组:

let paths = ['/root/','/root/folder1/','/root/folder2','/root/folder2/folder3'...

我想要完成的是递归地删除有子目录的父目录,所以我最终会得到这个:

let paths = ['/root/folder1/folder4','/root/folder2/folder3/folder5','/root/folder6'];

别担心,这不是为了家庭作业或其他任何事情,只是我被困在我的个人项目上 :D
如果你能用伪代码(或者更好的JavaScript)来回答,那就太好了。

您可以检查数组是否包含以给定路径开头的字符串。然后过滤掉该项目。

var paths = ['/root/', '/root/folder1/', '/root/folder2', '/root/folder2/folder3/', '/root/folder1/folder4', '/root/folder2/folder3/folder5'],
    result = paths.filter((p, i, a) => !a.slice(i + 1).some(o => o.startsWith(p)));
    
console.log(result);

我用 filter & some API 代替

以不同的方式进行了尝试

    let paths = ['/root/', '/root/folder1/', '/root/folder1/folder4/', '/root/folder2', '/root/folder2/folder3', , '/root/folder2/folder3/folder5', , '/root/folder6/'];

console.log(paths.filter((path) => {
        return !paths.some((indexPath) => { return path !== indexPath && indexPath.indexOf(path) > -1 });
}));