Javascript 过滤路径数组以仅保留最浅的路径

Javascript 过滤路径数组以仅保留最浅的路径,javascript,arrays,Javascript,Arrays,给定一个随机排序的路径数组,我想对其进行过滤,以便只有最浅的路径留在数组中。应删除所有子路径 我在下面的尝试确实过滤了一些路径,但最终结果是错误的,应该是一个只包含以下路径的数组: ['/video'、'/audio'、'/code'、'/images'、'/test/noparent'] 也许有一种解决方案不会多次迭代?您需要反转字符串的存在。检查当前路径是否为没有其他路径适合indexOf的路径 paths.filter(function (path) { var keep = true

给定一个随机排序的路径数组,我想对其进行过滤,以便只有最浅的路径留在数组中。应删除所有子路径

我在下面的尝试确实过滤了一些路径,但最终结果是错误的,应该是一个只包含以下路径的数组:

['/video'、'/audio'、'/code'、'/images'、'/test/noparent']


也许有一种解决方案不会多次迭代?

您需要反转字符串的存在。检查当前路径是否为没有其他路径适合indexOf的路径

paths.filter(function (path) {
  var keep = true;
  paths.forEach(function (another) {
      if (path.indexOf(another) === 0 && another !== path) keep = false;
  });
  return keep;
});

以下是我刚刚提出的解决方案:

paths.filter(function (path) {
  return paths.every(function (another) {
     return another === path || path.indexOf(another) !== 0;
  });
});

谢谢,我刚刚提出了一个稍微不同的解决方案,我将在下面发布。
paths.filter(function (path) {
  return paths.every(function (another) {
     return another === path || path.indexOf(another) !== 0;
  });
});