如果嵌套数据中存在某个值,我正试图从对象数组中删除对象。
从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是一个数组,我需要提供一个更多的功能来进入申请人的数组,但我不知道是什么。
答案 0 :(得分:2)
您对R.pathEq
的使用导致将用户ID与每个ID数组进行比较以获得相等,而不是检查每个数组是否包含给定的ID。
您可以使用R.pathSatisfies
和R.contains
const hasApplied = R.pathSatisfies(R.contains('/db/User/12'), ['applicants', 'applicants'])