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)))