2013-01-17 18 views
5

मैं दो पथ के बीच अंतर प्राप्त करने की कोशिश कर रहा हूं। मैं एक समाधान के साथ आया हूं, लेकिन मैं इसके बारे में वास्तव में खुश नहीं हूं, भले ही यह काम करता हो। क्या ऐसा करने के लिए एक बेहतर/आसान तरीका है?दो पथों के बीच नोडज अंतर

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'] 

उत्तर

14

नोड एक मानक समारोह, path.relative है, जो वास्तव में यह करता है और भी विभिन्न रिश्तेदार पथ किनारे मामलों के सभी आपके सामने आ सकने संभालती है प्रदान करता है

path.relative(from, to)

from से to से सापेक्ष पथ हल करें।

उदाहरण:

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' 
+0

मैंने पहले और के लिए किसी कारण सोचा था कि यह उचित नहीं था यह पर एक नज़र ले लिया। लकिन यह है। धन्यवाद – romainberger

0

यह काम कर सकता है। हालांकि यह इस तथ्य पर निर्भर करता है कि यह जानता है कि उनमें से कौन सा दूसरे का उप-समूह है, और मानता है कि मामला वही होगा।

online docs से::

var diff = secondPath.substring(firstPath.length); 
संबंधित मुद्दे