笛卡尔积

/* *思路:用两层for循环嵌套 */
function keyboardMap(str) {
   
  const strArr = str.split("");
  console.log(strArr);
  const map = [, , "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"];
  let result = [];
  for (let k = 0; k < str.length; k++) {
   
    result = fn(result, map[strArr[k]]);
  }
  console.log(result);
}

function fn(str1, str2) {
   
  if (str1.length === 0 || str2.length === 0)
    return str1.length === 0 || str2.length === 0 ? str2 : str1;

  let data = [];
  for (let i = 0; i < str1.length; i++) {
   
    for (let j = 0; j < str2.length; j++) {
   
      data.push(str1[i] + str2[j]);
    }
  }
  return data;
}
console.log(keyboardMap("49"));