可以使用正则表达式来匹配文件名,然后使用对象来存储相同文件名的路径。下面是一个示例代码:

function filterPaths(paths, n) {
  const regex = /\/([^\/]+)$/; // 匹配最后一个 / 后面的文件名
  const fileMap = {}; // 存储文件名和路径的映射

  for (let path of paths) {
    const match = path.match(regex); // 使用正则表达式匹配文件名
    if (match) {
      const filename = match[1]; // 获取匹配到的文件名

      if (fileMap[filename]) {
        // 如果已经存在该文件名的路径数组,则将当前路径添加进去
        fileMap[filename].push(path);
      } else {
        // 否则创建一个新的路径数组
        fileMap[filename] = [path];
      }
    }
  }

  // 筛选出文件名相同,并且路径数组长度为 n 的路径
  const result = Object.values(fileMap).filter(paths => paths.length === n);

  return result;
}

const paths = [
  '/xx/aa.t',
  '/aa.t',
  '/xx/xx/aa.t',
  '/xx/bb.t',
  '/yy/aa.t'
];

const filteredPaths = filterPaths(paths, 2);
console.log(filteredPaths);

以上代码将输出以下结果:

[ [ '/xx/aa.t', '/xx/xx/aa.t' ] ]

在上述示例中,我们将 paths 数组传递给 filterPaths 函数,并指定 n 的值为 2。函数会筛选出文件名相同,并且路径数组长度为 2 的路径。在这个例子中,只有 '/xx/aa.t' 和 '/xx/xx/aa.t' 两个路径的文件名相同,并且路径数组长度为 2。

JavaScript 从相对路径中筛选出重复文件名路径

原文地址: https://www.cveoy.top/t/topic/qfKs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录