由2-9字符串返回字母组合

问题描述: 给定由2-9组成的字符串,返回所有字母组合,2-9的映射关系可参考手机键盘。

示例输入: “23”

示例输出: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]

function handle(str) {
  function combine(strA, strB) {
    const combineArr = [];
    for (let i = 0; i < strA.length; i++) {
      for (let j = 0; j < strB.length; j++) {
        combineArr.push(`${strA[i]}${strB[j]}`);
      }
    }
    return combineArr;
  }

  const letters = ['', '', 'abc', 'def', 'ghi', 'gkl', 'mno', 'pqrs', 'tuv', 'wxyz'];
  let result = [];
  for (let a = 0; a < str.length; a++) {
    if (a === 0) {
      result = combine(letters[str[a]], letters[str[a+1]]);
    } else if (a !== str.length - 1) {
      result = combine(result, letters[str[a+1]]);
    }
  }
  return result;
}

console.log(handle('2345'));