Ramda根据嵌套值

时间:2017-10-24 21:25:48

标签: ramda.js

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

从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));

但是我不认为这是正确的,因为applicants.applicants是一个数组,我需要提供一个更多的功能来进入申请人的数组,但我不知道是什么。

1 个答案:

答案 0 :(得分:2)

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

您可以使用R.pathSatisfiesR.contains

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