1、首先有一个对象列表,结构如下
objectList=[
{
objectId:'object1', // 对象Id
objectName: '对象1', // 对象名称
parentId:'parent1', // 父用户Id
childId: 'child1' // 子用户Id
},
{
objectId:'object2',
objectName: '对象2',
parentId:'parent1',
childId: 'child1'
},
{
objectId:'object3',
objectName: '对象3',
parentId:'parent1',
childId: 'child2'
},
{
objectId:'object4',
objectName: '对象4',
parentId:'parent1',
childId: 'child3'
}]
目的是给出一个childId,返回objectList表中所有符合条件的对象。
这个不仅仅是filter一下这么简单,还有一个authList数组来做限制:
限制规则如下(假设要从objectList取出childId=‘child1’且type的值包含‘seach’的对象):
1、如果authList数组为空,那么忽略type,直接过滤objectList,得到结果。
结果应该是object1和object2两个对象。
2、如果authList不为空且数组结构如下,那么则应该在步骤1的基础上还要进行操作:
authList=[
{
objectId:'object1',
childId: 'child1',
type:'add,delete'
},
{
objectId:'object3',
childId: 'child1',
type:'seach'
},
]
那么此时应该根据authList表的type字段来进行判断。结果应该是object2和object3两个对象。(authList的第一条记录的type中没有seach,不符合条件;第二条记录的type有search,所以将object3也添加到结果中);
请问怎么优雅的实现上述功能呢?尝试写了一下,感觉代码都是相当的复杂而且一会儿就把自己绕晕了。请大神指教。
你给的数据中authList里的 search拼错了.