Here is the JavaScript source code for the combination algorithm: (Adapted
from scriptar.com/JavaScript/combine.js)
var isArray = function(o) {
return (o instanceof Array) || (Object.prototype.toString.apply(o) === "[object Array]");
},
combinations = function(args) {
var n, inputArr = [], copyArr = [], results = [],
subfunc = function(copies, prefix) {
var i, myCopy = [], exprLen, currentChar = "", result = "";
if (typeof prefix === "undefined") {
prefix = "";
}
if (!isArray(copies) || typeof copies[0] === "undefined") {
return;
}
myCopy = copies.splice(0, 1)[0];
exprLen = myCopy.length;
for (i = 0; i < exprLen; i += 1) {
currentChar = myCopy[i];
result = prefix + currentChar;
if (result.length === n) {
results.push(result);
}
if (typeof copies[0] !== "undefined") {
subfunc(copies.slice(0), result);
}
}
};
if (typeof args.str === "string") {
inputArr = args.str.split("");
for (n = 0; n < inputArr.length; n += 1) {
copyArr.push(inputArr.slice(0));
}
}
if (isArray(args.arr)) {
for (n = 0; n < args.arr.length; n += 1) {
copyArr.push(args.arr[n].split(""));
}
}
subfunc(copyArr);
return results;
};
Go to Scriptar.com Home | JS
Permutation Technique #1 | JS Permutation
Technique #2