Ramda - 附加路径

Ramda - appendPath

我正在开始使用 Ramda 的新项目,我正在寻找一些函数来将项目附加到给定路径上的数组。在 Immutable.js 中它被称为 pushInRamda中是否有任何等价物?

我找到了结合 appendassocPathpath 的工作方法,但它看起来很奇怪。

const state = {
  groups: {
    1: {
      items: [1, 2]
    }
  }
}
const paths = ['groups', 1, 'items'];
const result = R.assocPath(paths, R.append(3, R.path(paths, state)), state);



Result: {
          groups: {
            1: {
              items: [1, 2, 3]
            }
          }
        }

有没有更简单的方法?

谢谢

我会尝试一些不同的东西。

const {over, lensPath, append} = R

const state = {groups:{1:{items:[1, 2]}}}

const addItem = (item, state) => over(lensPath(['groups', 1, 'items']), append(item), state) 

console.log(addItem(3, state)) 
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script>

虽然可能有一种方法可以做到这一点 point-free,但它看起来足够可读了。