考虑以下情况:
items = [
{
id: 1
attributes: [
{ key: a, value: 2 }
{ key: b, value: 3 }
],
requirements: null
}
{
id: 2
attributes: [
{ key: b, value: 2 }
],
requirements: a > 2
}
{
id: 3
attributes: [
{ key: a, value: 1 }
{ key: c, value: 1 }
],
requirements: a > 1 and b > 2
}
{
id: 4
attributes: [
{ key: a, value: 2 }
{ key: d, value: 7 }
],
requirements: b > 5 and h < 10
}
]
将各种加在一起(总和)的预期结果attributes
是:
result = [
{ key: a, value: 3 }
{ key: b, value: 5 }
{ key: c, value: 1 }
]
如您所见,requirements
列表中的对象之间存在依赖关系 ( )。特别是,具有id: 4
(系列中的最后一个)的对象从计算中被丢弃,因为b > 5 and h < 10
从未检查过条件。相反,带有 的对象id: 2
最初被丢弃,然后作为带有 的对象的结果落入计算中id: 3
(通过将 1 加到属性a
中,使条件为真a > 2
)。
获得具有 N 个对象的所需结果所需的算法是什么?
免责声明:建议的结构只是一个例子。您可以提出任何您认为可以实现结果的更改。我正在使用 JavaScript (CoffeeScript) 编程语言,但其他任何语言都可以。