samuelhauser
10/17/2017 - 10:47 AM

Get all possibilities

Get all possibilities from a given array.

let allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];

const allPossibleCases = (arr) => {
	if (arr.length === 1) {
		return arr[0];
	} else {
		let result = [];
		let allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
		for (let i = 0; i < allCasesOfRest.length; i++) {
			for (let j = 0; j < arr[0].length; j++) {
				result.push(arr[0][j] + allCasesOfRest[i]);
			}
		}
		return result;
	}
};

console.log(allPossibleCases(allArrays));
// returns: ["acd", "bcd", "ace", "bce", "acf", "bcf"]