【问题标题】:Ramda remove objects from array based on nested valueRamda 根据嵌套值从数组中删除对象
【发布时间】:2017-10-25 06:14:25
【问题描述】:

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

从 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 存在于申请人数组中的班次,申请人数组将位于申请人.applicants。

在这种情况下我无法展平数据,每个班次的申请人列表确实必须是包含在对象中的数组。

我试过了:

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

但我认为这不太对,因为申请人.applicants 是一个数组,我认为我需要再提供一个函数才能进入申请人数组,但我不确定是什么。

【问题讨论】:

    标签: ramda.js


    【解决方案1】:

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

    您可以改用R.pathSatisfiesR.contains

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多