gpt4 book ai didi

javascript - 使用 Underscore/Lodash 在 javascript 中执行非变异反尾的最佳方法

转载 作者:行者123 更新时间:2023-11-30 12:30:54 34 4
gpt4 key购买 nike

我是我的 node.js 项目中 lodash/underscore 的狂热用户,我发现自己处于一种情况,我需要以类似于以下代码的方式从右到左递归遍历数组(假设所有调用都是同步的):

function makeDir(pathArray) {
var unsulliedPath = clone(pathArray);
var lastGuy = pathArray.pop();
var restOfEm = pathArray;
if dirExists(unsulliedPath) {
console.log("Your job is done!");
} else {
makeDir(restOfEm);
makeDir(unsulliedPath);
}
}

然而,必须克隆和改变 pathArray 参数让我很烦恼。所以我可以这样做:

function makeDir(pathArray) {
var lastGuy = _.last(pathArray);

// EITHER I could...
var restOfEm = _(pathArray).reverse().tail().reverse().value();
// OR I could do...
var restOfEm = _.first(pathArray, pathArray.length - 1);

if dirExists(pathArray) {
console.log("Your job is done!");
} else {
makeDir(restOfEm);
makeDir(pathArray);
}
}

好吧,这解决了必须克隆传入的参数的问题。不过,下划线咒语有点难看。

lodash/underscore 是否包含一个更简单、更清晰的方法来获取 _.rest() 的逆函数,即除最后一个元素之外的每个元素?如果没有,是否有一个首选的惯用解决方案来在 Javascript 中实现此方法以与 lodash/underscore 风格的函数库一起使用,或者这只是吹毛求疵?

提前致谢,对于我的问题中任何明显的遗漏或错误,我们深表歉意。

最佳答案

为什么要使用下划线/lodash。

var last = pathArray.slice(-1)[0];
var rest = pathArray.slice(0, -1);

slice会很容易地为你做这一切......

关于javascript - 使用 Underscore/Lodash 在 javascript 中执行非变异反尾的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736773/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com