代码之家  ›  专栏  ›  技术社区  ›  Chris Chong

Ramda基于嵌套值从数组中删除对象

  •  1
  • Chris Chong  · 技术社区  · 8 年前

    如果嵌套数据中存在某个值,我试图从对象数组中删除一个对象。

    从API返回的数据形状如下:

    Array [
      Object {
        "id": "/db/Shifts/123",
        "applicants": Object {
          "applicants": Array [
            "/db/User/12",
            "/db/User/13",
          ],
      },
      Object {
        "id": "/db/Shifts/456",
        "applicants": Object {
          "applicants": Array [
            "/db/User/12",
            "/db/User/14",
          ],
      },  
      Object {
        "id": "/db/Shifts/789",
        "applicants": Object {
          "applicants": Array [
            "/db/User/13",
            "/db/User/14",
          ],
      },
    ]
    

    使用Ramda,我将如何过滤出用户12在申请人数组中存在的移位,该数组将位于申请人处。申请人。

    我试过这个:

    var hasApplied = pathEq(['applicants', 'applicants'], 'db/User/12');
    console.log(filter(hasApplied, shifts));
    

    但我认为这不太正确,因为申请人。申请者是一个数组,我需要再输入一个函数才能进入申请者数组,但我不确定是什么。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Scott Christopher    8 年前

    R.pathEq 导致将用户ID与每个ID数组进行比较,以确定是否相等,而不是检查每个数组是否包含给定ID。

    你可以利用 R.pathSatisfies 随着 R.contains

    const hasApplied = R.pathSatisfies(R.contains('/db/User/12'), ['applicants', 'applicants'])