努力写这段代码。递归加法
我想从2个对象中计算出最高值。我开始单独的“S”和“P”的对象:
var S = [
{ id: '1', value: '##' },
{ id: '2', value: '##' },
{ id: '3', value: '##' },
{ id: 'N', value: '##' }
];
var P = [
{ id: '1', value: '##' },
{ id: '2', value: '##' },
{ id: '3', value: '##' },
{ id: 'N', value: '##' }
];
我创建了一个第三对象:
var myobject = {
'S1' = {
'P1' = '25',
'P2' = '32',
'P3' = '65',
'PN' = '##'
},
'S2' = {
'P1' = '24',
'P2' = '31',
'P3' = '64',
'PN' = '##'
},
'S3' = {
'P1' = '26',
'P2' = '33',
'P3' = '66',
'PN' = '##'
},
'SN' = {
'P1' = '##',
'P2' = '##',
'P3' = '##',
'PN' = '##'
}
};
我需要通过所有的值来迭代看到与组合产生的最高值,例如:
S1.P1 + S2.P1 + S3.P1 = ?
S1.P1 + S2.P1 + S3.P2 = ?
S1.P1 + S2.P1 + S3.P3 = ?
S1.P1 + S2.P2 + S3.P1 = ?
S1.P1 + S2.P2 + S3.P2 = ?
S1.P1 + S2.P2 + S3.P3 = ?
...
我在寻找,使用上面的示例值答案是:
S1.P3 + S2.P3 + S3.P3 = 195
更为复杂的是,在某些情况下,“P”值仅可一旦方程中使用:
var P = [
{ id: '1', value: '##' },
{ id: '2', value: '##' },
{ id: '3', value: '##', once: true },
{ id: 'N', value: '##' }
];
如果“P3”只能使用一次,答案我在寻找使用上面的例子值是:
S1.P2 + S2.P2 + S3.P3 = 129;
我猜需要一点点递推....但我的头很痛。
编辑
我迷失在试图创建计算的循环,例如:
foreach "S"
foreach "P"
foreach "S"
foreach "P"
....
建议?
当然,你需要做的就是在S1,S2和S3中找到'Pn'的最高值并将它们加在一起。 –
感谢@MattBurland的回应。除了最高值只能用一个“S”,那么我需要弄清楚哪个“S”使用“P” – timborden
[确定正确的组合]有什么区别(http://stackoverflow.com /问题/ 13277834 /确定最合适的组合)? – Bergi