0

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

我基本上已经确定它用于对数组路径进行某种“清理”,但仍然无法“掌握”它真正在做什么......谁能解释一下?

这是模块的链接: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”函数中。

如果有人能帮助我理解这一点,它可能会让我的心情放松一点......

4

1 回答 1

0

该函数的作用是从给定数组的开头和结尾删除空字符串值。如果你打电话trim(['', '', 1, 2, '']),你会得到[1, 2]

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

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

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

如果应该保留一些数组元素(如我的示例中的 1 和 2),则数组只是通过其slice方法进行修剪。该slice方法对应于String::substr例如该方法。

我希望你现在明白了。

于 2012-09-17T12:10:04.587 回答