function subsetSum(numbers, target, partial) {
var s, n, remaining;
partial = partial || [];
s=0;
for(var j=0;j<partial.length;j++){
s=parseInt(partial[j].value)+ s;
}
// check if the partial sum is equals to target
if (s === target) {
console.log("combination is");
partial.forEach(function(i){console.log(i.itemz);})
}
if (s >= target) {
return; // if we reach the number why bother to continue
}
for (var i = 0; i < numbers.length; i++) {
n = numbers[i];
remaining = numbers.slice(i + 1);
subsetSum(remaining, target, partial.concat([n]));
}
}
var obj = [
{ 'itemz': 'tomato', 'value': 5 },
{ 'itemz': 'potatos', 'value': 3 },
{ 'itemz': 'banana', 'value': 7 },
{ 'itemz': 'orange', 'value': 6 },
{ 'itemz': 'apple', 'value': 4 },
{ 'itemz': 'cherries', 'value': 5 },
{ 'itemz': 'watermelon', 'value': 9 },
{ 'itemz': 'orange', 'value': 8 }
];
subsetSum(obj,10);