ramdajs:使用满足规范的内部数组定位项目

时间:2017-03-18 09:24:20

标签: javascript ramda.js

给出这样的结构:

[
  {
    documentType: { id: 4001 }
    correspondence: [ { id: 1000 }, { id: 1010 } ]
  },
  {
    documentType: { id: 102 }
    correspondence: [ { id: 1000 } ]
  },
  {
    documentType: { id: 101 }
    correspondence: [ { id: 1001 } ]
  }
]

我正在尝试使用ramda来查找内部对应数组包含1000的数组的索引。

我试过这个:

R.filter(R.where({ correspondence: R.any(R.where({ id: 1000 }))}))(data)

1 个答案:

答案 0 :(得分:2)

首先,您需要对谓词函数进行轻微调整,将内部Sys.setenv("PKG_CXXFLAgs"="-I/usr/local/cuda-8.0/include") Sys.setenv("PKG_LIBS"="-L/usr/local/cuda-8.0/lib64 -lnvblas") 更改为R.where,以便与常量值而不是函数进行比较:

R.propEq

然后我有两个如何处理这个问题的例子,都使用const pred = R.where({ correspondence: R.any(R.propEq('id', 1000))}) 来捕获索引:

在测试每个元素时使用R.addIndex构建列表的人:

R.reduce

第二个使用const reduceWithIdx = R.addIndex(R.reduce) const fn = reduceWithIdx((acc, x, i) => pred(x) ? R.append(i, acc) : acc, []) fn(data) //=> [0, 1] 在过滤前将索引嵌入到每个元素中:

R.map