Nodejs两条路径之间的差异

时间:2013-01-17 23:59:22

标签: node.js

我试图找到两条路径之间的区别。我已经找到了解决方案,但我对此并不高兴,即使它有效。是否有更好/更简单的方法来做到这一点?

var firstPath =  '/my/first/path'
  , secondPath = '/my/first/path/but/longer'

// what I want to get is: '/but/longer'

// my code:
var firstPathDeconstruct = firstPath.split(path.sep)
  , secondPathDeconstruct = secondPath.split(path.sep)
  , diff = []

secondPathDeconstruct.forEach(function(chunk) {
  if (firstPathDeconstruct.indexOf(chunk) < 0) {
    diff.push(chunk)
  }
})

console.log(diff)
// output ['but', 'longer']

2 个答案:

答案 0 :(得分:18)

Node提供了一个标准函数path.relative,它正是这样做的,并且还处理了您可能遇到的所有各种相对路径边缘情况:

来自online docs

  

path.relative(from, to)

     

解决从fromto的相对路径。

     

示例:

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb')
// returns
'..\\..\\impl\\bbb'

path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// returns
'../../impl/bbb'

答案 1 :(得分:0)

这可能有用。 虽然它依赖于这样一个事实,即它知道哪一个是另一个的子集,并假设情况是相同的。

var diff = secondPath.substring(firstPath.length);