使用 Ramda.js 实现此目的的最佳方法是什么?
function innerVals(array) {
const lengthMinus1 = array.length - 1;
return array.slice(1, lengthMinus1);
}
我似乎无法找到一种在不将该变量存储在某处的情况下切片直到 length - 1 的好方法。我能想到的最好的方法是使用 Ramda 的聚合函数,如下所示:
// innerVals :: Array -> Array
function innerVals(array) {
// lengthMinus1 :: Array -> Number
const lengthMinus1 = R.pipe(R.length, R.subtract(_, 1));
// getVals :: Array -> Array
const getVals = R.converge(
R.slice(1, _, _),
[lengthMinus1, R.identity]
);
return getVals(array);
}
我很难相信这是实现如此简单目标的干净方法。函数式编程方法中的代码明显更多,而且我还认为其他开发人员阅读/维护起来会更加困难。我错过了什么吗?如果有人有不同的方法,请告诉我。谢谢!
最佳答案
我推荐R.slice
:
> R.slice(1, -1, [1, 2, 3, 4, 5])
[2, 3, 4]
> R.slice(1, -1)([1, 2, 3, 4, 5])
[2, 3, 4]
关于javascript - Ramda.js - 切片数组的内部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35924229/