All Subsets

by mschock

HTML

<ul id="output">

</ul>

JavaScript

function permuteString(set, perm) {
	perm = perm || '';
    print(perm);
    if (set.isEmpty()) {
    	return;
    } else {
    	set.forEach(function(elem) {
        	permuteString(diff(set, elem), perm + elem);
        });
    }
}

function print(value) {
	value = '{' + [].slice.call(value).join(', ') + '}';
	var elem = document.createElement('li');
	elem.innerHTML = value;
    document
    	.getElementById('output')
    	.appendChild(elem);
}

function diff(setA, elem) {
	console.log([...setA]);
    var arrayA = [...setA];
    arrayA.forEach(function(arrayElem, i) {
    	if (arrayElem === elem) {
        	arrayA.splice(i, 1);
        }
    });
    return new Set(arrayA);
}

var set = new Set([2, 3, 4]);
Set.prototype.isEmpty = function() {
	return this.size === 0;
}

permuteString(set);