我有一个类似于这样的集合:
const collection = [
{
name: 'THIS_ITEM',
conditions: {
oneCondition: false,
anotherCondition: false,
yourCondition: false,
myCondition: false
}
}, {
name: 'THAT_ITEM',
conditions: {
oneCondition: false,
anotherCondition: false,
yourCondition: true,
myCondition: false
}
}, {
name: 'THOSE_ITEMS',
conditions: {
oneCondition: true,
anotherCondition: false,
yourCondition: null,
myCondition: false
}
}
];
...然后是一个长这样的对象:
const condition = {
oneCondition: true,
anotherCondition: false,
yourCondition: true,
myCondition: false
};
我正在尝试将“condition”对象与“collection”中的嵌套“conditions”对象进行匹配,以找到匹配项,从而检索匹配条目中的“name”属性。
让我感到困惑的是,“conditions”属性可以具有“模糊”值。我的意思是,如果源“collection”中的任何属性设置为“true”或“false”,则它们必须与“condition”中的值完全匹配。但是,如果源“collection”中的属性具有“null”值,则可以匹配“true”或“false”中的任何一个。
例如:
以下内容将匹配:
const condition = {
oneCondition: true,
anotherCondition: false,
yourCondition: true,
myCondition: false
};
const collection = [
…
}, {
name: 'THOSE_ITEMS',
conditions: {
oneCondition: true,
anotherCondition: false,
yourCondition: null,
myCondition: false
}
}
];
这些不会:
const condition = {
oneCondition: true,
anotherCondition: false,
yourCondition: true,
myCondition: false
};
const collection = [
…
}, {
name: 'THAT_ITEM',
conditions: {
oneCondition: false,
anotherCondition: false,
yourCondition: true,
myCondition: false
}
}, {
…
];
有什么建议吗?我在使用Lodash,但似乎无法想象出不含有冗长和嵌套的解决方案。