JSFiddle - React, Tailwind, and code Playground
by Keith
HTML
<h3>Source Array:</h3>
<div id="sourceArray"></div>
<h3>Permutations:</h3>
<div id="permutations"></div>
<h3>Results:</h3>
<div id="results"></div>
JavaScript
var a = [1,3,6,10,-1], n = 9;
function combinations(array, n) {
$('#sourceArray').html(JSON.stringify(array) + '<br>n='+n)
var mask, len = array.length, count = 1 << len, permutations = [];
var indexVisible = function(v, i) { return ((mask >> i) & 1) == 1 }
var sum = function(a, b) { return a + b }
for (mask = 1; mask < count; ++mask) {
permutations.push(array.filter(indexVisible))
}
$('#permutations').html(JSON.stringify(permutations))
return permutations.filter(function(p) { return p.reduce(sum) <= n })
}
$('#results').html(JSON.stringify(combinations(a, n)))