Below is a recursive function which gives all possible unique combinations of elements in a array in all order and lengths.
Alternate 1
Alternate 3
Alternate 1
function getAllCombinations(arr) { var inputArray = arr; var resultArray = []; var combine = function() { var args = arguments; var temp = []; for (var i in args) { temp.push(inputArray[args[i]]); } if (temp.length > 0) { resultArray.push(temp); } for (i in inputArray) { temp = []; for (var j in args) { if (args[j] == i) { temp = false; break; } else { temp.push(args[j]); } } if (temp) { temp.push(i); combine.apply(null, temp); } } return resultArray; }; return combine(); }Alternate 2
function getAllCombinations(arr) { var inputArray = arr; var resultArray = []; var conditionNext = true; var combine = function() { var args = arguments; var temp = []; for (var i in args) { temp.push(inputArray[args[i]]); } if (temp.length > 0) { resultArray.push(temp); } for (i in inputArray) { conditionNext = true; if (args.length !== 0) { for (var j in args) { if (args[j] == i) { conditionNext = false; } } } if (conditionNext) { temp = []; for (j in args) { temp.push(args[j]); } temp.push(i); if (temp.length > 0) { combine.apply(null, temp); } } } return resultArray }; return combine(); }
Alternate 3
function getAllCombinations(arr) { var inputArray = arr; var resultArray = []; var checkCondition = function(args, nextIndex) { if (args.length === 0) { return true; } for (var i = 0; i < args.length; i++) { if (args[i] == nextIndex) { return false; } } return true; }; var applyFunc = function(args, index) { var temp = []; for (var i = 0; i < args.length; i++) { temp.push(args[i]); } temp.push(index); if (temp.length > 0) { v.apply(null, temp); } }; var populateResult = function(args) { var temp = []; for (var i = 0; i < args.length; i++) { temp.push(inputArray[args[i]]); } if (temp.length > 0) { resultArray.push(temp); } }; var v = function() { var args = arguments; populateResult(args); for (var i = 0; i < inputArray.length; i++) { if (checkCondition(args, i)) { applyFunc(args, i); } } }; v(); return resultArray; }See the complete solution discussion here
0 comments :
Post a Comment