JSFiddle - React, Tailwind, and code Playground

HTML

<div id="res">

</div>

JavaScript

var arr=['a','b','c']
  var res = allArrCombi(arr);
  var resStr="";
  
  for (var i=0;i<res.length;i++){
    resStr+=" <BR> "+res[i].join();
  }
  document.getElementById("res").innerHTML=resStr;

function allArrCombi(arr){
var hash={};
var res=[];
arr.sort();
var len=Math.pow(2, arr.length);
for (var i=1;i<len;i++){
    var lineRes=[];
    for (var innerPos=0;innerPos < arr.length;innerPos++){
        var mask = 1 << innerPos;

        if (mask & i){
            lineRes.push(arr[innerPos]);
        }
    }
    do{
        if (!hash[arr.join("-")]){ // did we have this combinatin already
            res.push(lineRes.slice())
        }
    }while(nextPermutation(lineRes))
}

    return res;
}


function nextPermutation(array) {

var i = array.length - 1;
while (i > 0 && array[i - 1] >= array[i])
    i--;
if (i <= 0)
    return false;


var j = array.length - 1;
while (array[j] <= array[i - 1])
    j--;
var temp = array[i - 1];
array[i - 1] = array[j];
array[j] = temp;


j = array.length - 1;
while (i < j) {
    temp = array[i];
    array[i] = array[j];
    array[j] = temp;
    i++;
    j--;
}
return true;
}