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