2016-07-13 4 views
1

Code:path.join für die tmpDir gibt zwei zusätzliche Token (leere Strings)

var tmp = path.join(os.tmpDir(), dir); 
var segments = tmp.split(path.sep); // create directories/subdirectories 
console.log(tmp); 
for(var i=0; i<segments.length; i++) { 
    var segment = segments.slice(0, i).join(path.sep); 
    console.log(i, segment.length, segment, fs.existsSync(segment)); 
} 

Ausgang:

/var/folders/ch/pc8wsx1x1_v10hdl7zxnvjqr0000gn/T/somedir 
0 0 '' false 
1 0 '' false 
2 4 '/var' true 
3 12 '/var/folders' true 

Frage:

Warum Index 0 und 1 sind leere Strings?

Antwort

0

Wegen segments.slice(0, i)

die erste Iteration es das erste Element schließt:

"slice Extrakte bis zu, jedoch nicht einschließlich end"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

die zweite Iteration, es enthält das erste Element, das leer ist, weil der Pfad aufgeteilt wurde: tmp.split(path.sep), und da der Pfad mit einem führenden Schrägstrich beginnt.

Wenn Sie wissen, dass es immer ein absoluter Pfad ist, starten Sie die Schleife bei i = 2. Wenn ein relativer Pfad eingegeben werden kann, müssen Sie nur bei i = 1 beginnen und sich mit dem leeren Element bei Index 0 beschäftigen, wenn Sie mit absoluten Pfaden arbeiten.

+0

ok, was ist der richtige Weg, dies hätte geschrieben werden sollen? – user2727195

Verwandte Themen