【问题标题】:path.join for the tmpDir returns two extra tokens (empty strings)tmpDir 的 path.join 返回两个额外的标记(空字符串)
【发布时间】:2016-07-13 19:15:45
【问题描述】:

代码:

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));
}

输出:

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

问题:

为什么索引 0 和 1 是空字符串?

【问题讨论】:

    标签: javascript node.js path


    【解决方案1】:

    因为segments.slice(0, i)

    第一次迭代,排除第一个元素:

    "切片提取到但不包括结尾"

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

    第二次迭代,它包含第一个元素,因为路径是如何拆分的:tmp.split(path.sep),并且因为路径以斜杠开头。

    如果您知道它始终是绝对路径,则在 i=2 处开始循环。如果可以输入相对路径,则只需从 i=1 开始,在使用绝对路径时处理索引 0 处的空白元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 2010-12-05
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多