JSFiddle - React, Tailwind, and code Playground

JavaScript

function permutator(inputArr, amount, total) {
  var results = [], out = [];

  function permute(arr, memo) {
    var cur, memo = memo || [];
    var add = function (a, b) { return a + b; }

    for (var i = 0; i < arr.length; i++) {
      cur = arr.splice(i, 1);
      if (arr.length === 0) {
        results.push(memo.concat(cur));
      }
      var a = arr.slice();
      var sum = memo.concat(cur).reduce(add);
 
      if (memo.concat(cur).length === amount && sum === total) {
        out.push(memo.concat(cur))
      }

      permute(a, memo.concat(cur));
      arr.splice(i, 0, cur[0]);
    }

    return [results, out];
  }

  return permute(inputArr);
}

console.log(permutator([1,2,3,4], 3, 9))