将新对象插入数组Ramda

Ramda有insert function。但是在我的情况下,我不知道如何钻取对象并将新对象插入数组。另外,新对象应该位于数组的最后一个索引上,我们可以通过stuff["31"].length来获得它。我的尝试太可悲了,所以我决定不展示给他们:/

数据模型:

const stuff = {
  "31": [
    {
      "id": "11","title": "ramda heeeelp"
    },{
      "id": "12","title": "ramda 123"
    },//HERE I WANT TO INSERT A NEW OBJECT - {id: "13",title: "new title"}
  ],"33": [
    {
      "id": "3","title": "..."
    }
  ],"4321": [
    {
      "id": "1","title": "hello world"
    }
  ]
}
jiajiadelan 回答:将新对象插入数组Ramda

这是直接使用镜头,最后加上append

这是我要怎么做:

const addObjToGroup = (groupId,newObj,data) => 
  over (lensProp (groupId),append (newObj),data)

const stuff = {"31": [{"id": "11","title": "ramda heeeelp"},{"id": "12","title": "ramda 123"}],"33": [{"id": "3","title": "..."}],"4321": [{"id": "1","title": "hello world"}]}

console .log (
  addObjToGroup ('31',{id: "13",title: "new title"},stuff)
)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>
<script>const {over,lensProp,append} = R                           </script>

,

您还可以使用Evolution将项目附加到groupId中的数组中:

const { evolve,append } = R

const addObjToGroup = (groupId,newObj) => evolve({ [groupId]: append(newObj) })

const stuff = {"31": [{"id": "11","title": "hello world"}]}

const result = addObjToGroup ('31',title: "new title"})(stuff)

console .log (result)
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

,

R.useWith在这里也有帮助!

const appendTo = R.useWith(R.over,[
  R.lensProp,R.append,R.identity
]);


// ---
const stuff = {
  "31": [
    {
      "id": "11","title": "ramda heeeelp"
    },{
      "id": "12","title": "ramda 123"
    },//HERE I WANT TO INSERT A NEW OBJECT - {id: "13",title: "new title"}
  ],"33": [
    {
      "id": "3","title": "..."
    }
  ],"4321": [
    {
      "id": "1","title": "hello world"
    }
  ]
}

console.log(
  appendTo('31','HELLO WORLD',stuff),);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>

本文链接:https://www.f2er.com/3165449.html

大家都在问