javascript - Ramda.js - 切片数组的内部值

标签 javascript arrays functional-programming ramda.js

使用 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/

相关文章:

Swift 变异函数作为一等值

javascript - 为什么追加部分在ajax调用中不起作用

javascript - 在没有 AJAX 的情况下使用 JavaScript 执行 GET 请求

javascript - 根据顺序更改深层嵌套 Javascript 对象中同名属性的多个值

php - 如何在 for 循环中跟踪基数?

variables - 我如何记住 Haskell 中二叉搜索树的根

javascript - PHP sendmail 表单发送空白电子邮件,如何修复 java 脚本?

javascript - 指定父 div 不透明度但不影响子 HTML 元素

c - 结构体数组

function - Clojure:如何执行一系列函数?