Node.js模块代码说明? Path.js trim(arr){}

时间:2012-09-17 11:59:37

标签: javascript node.js

我正在尝试更好地学习JavaScript,在查看Node.js模块源代码时,我在Path.js模块中遇到了这个嵌套函数。

我基本上已经确定它曾用于对数组路径进行某种“清理”,但仍然无法“GRASP”它正在做什么......任何人都能解释一下吗?

以下是该模块的链接:https://github.com/joyent/node/blob/master/lib/path.js

function trim(arr) {
      var start = 0;
      for (; start < arr.length; start++) {
        if (arr[start] !== '') break;
      }

      var end = arr.length - 1;
      for (; end >= 0; end--) {
        if (arr[end] !== '') break;
      }

      if (start > end) return [];
      return arr.slice(start, end - start + 1);
    }

这是嵌入posix版本的“export.relative”函数。

如果有人能帮助我理解这一点,那可能会让我的思绪有所缓和......

1 个答案:

答案 0 :(得分:0)

这个函数的作用是从给定数组的开头和结尾删除空字符串值。如果您致电trim(['', '', 1, 2, '']),则会获得[1, 2]

首先从头开始检查空字符串值(从索引0开始)。然后它执行相同的检查,但从结束开始(从arr.length-1的索引开始,这是数组中的最后一个索引)并向后。

当遇到非空字符串值时,检查停止。

如果start > end则没有非空字符串值,因此返回空数组是安全的。

如果有一些数组元素应该保留(例如我的例子中的1和2),那么数组只是被slice方法修剪。 slice方法对应于String::substr方法。

我希望你现在明白。