Ramda - appendPath

时间:2018-03-17 14:57:13

标签: javascript ramda.js

我开始使用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]
            }
          }
        }

有没有更简单的方法?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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>

虽然可能有一种方法可以实现这一点,但这似乎足够可读。