我正在尝试更好地学习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”函数。
如果有人能帮助我理解这一点,那可能会让我的思绪有所缓和......
答案 0 :(得分:0)
这个函数的作用是从给定数组的开头和结尾删除空字符串值。如果您致电trim(['', '', 1, 2, ''])
,则会获得[1, 2]
。
首先从头开始检查空字符串值(从索引0开始)。然后它执行相同的检查,但从结束开始(从arr.length-1
的索引开始,这是数组中的最后一个索引)并向后。
当遇到非空字符串值时,检查停止。
如果start > end
则没有非空字符串值,因此返回空数组是安全的。
如果有一些数组元素应该保留(例如我的例子中的1和2),那么数组只是被slice
方法修剪。 slice
方法对应于String::substr
方法。
我希望你现在明白。