从数组中删除父目录
Removing parent directories from array
假设我有这样的文件夹结构:
- 根目录
- 文件夹1
- 文件夹 4
- 文件夹2
- 文件夹3
- 文件夹5
- 文件夹 6
我有一个包含所有路径的数组:
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 });
}));
假设我有这样的文件夹结构:
- 根目录
- 文件夹1
- 文件夹 4
- 文件夹2
- 文件夹3
- 文件夹5
- 文件夹3
- 文件夹 6
- 文件夹1
我有一个包含所有路径的数组:
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 });
}));