Mi solución:
const addCombination = (i, currentWord, keyboard, phoneNumber, combinations) => {
if (i >= phoneNumber.length) {
if (currentWord) {
combinations.push(currentWord);
}
return;
}
keyboard.get(parseInt(phoneNumber[i])).forEach(letter => {
addCombination(i + 1, currentWord + letter, keyboard, phoneNumber, combinations)
});
};
export function letterCombinations(phoneNumber) {
const PHONE_KEYBOARD = new Map();
PHONE_KEYBOARD.set(2, ['a', 'b', 'c']);
PHONE_KEYBOARD.set(3, ['d', 'e', 'f']);
PHONE_KEYBOARD.set(4, ['g', 'h', 'i']);
PHONE_KEYBOARD.set(5, ['j', 'k', 'l']);
PHONE_KEYBOARD.set(6, ['m', 'n', 'o']);
PHONE_KEYBOARD.set(7, ['p', 'q', 'r', 's']);
PHONE_KEYBOARD.set(8, ['t', 'u', 'v']);
PHONE_KEYBOARD.set(9, ['w', 'x', 'y', 'z']);
let combinations = [];
addCombination(0, '', PHONE_KEYBOARD, phoneNumber, combinations);
return combinations;
}
console.log(letterCombinations("23"));