题目:
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    200px-telephone-keypad2svg.png
    示例 1:
    输入:digits = “23” 输出:[“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]

    示例 2:
    输入:digits = “” 输出:[]

    示例 3:
    输入:digits = “2” 输出:[“a”,”b”,”c”]

    提示:

    • 0 <= digits.length <= 4
    • digits[i] 是范围 [‘2’, ‘9’] 的一个数字。

      1. let arr1 = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];
      2. // 处理字符的排列组合
      3. function fn(arr) { //["abc", "def","ghi"]
      4. let res = [];
      5. for(let i=0;i<arr[0].length;i++) { //"abc"
      6. for(let j=0; j<arr[1].length;j++) { //"def"
      7. res.push(arr[0][i] + arr[1][j])
      8. }
      9. }
      10. // console.log(res) //["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
      11. //splice(替换起始位置,替换结束位置(不包括在内),替换的内容)
      12. arr.splice(0,2,res)
      13. // console.log(arr); // [Array(9), "ghi"]
      14. if(arr.length > 1) {
      15. fn(arr)
      16. }
      17. return arr[0]
      18. }
      19. var letterCombinations = function (digits) { //'23'
      20. let digitsArr = digits.split('') // ["2", "3"]
      21. let letters = []; //["abc", "def"]
      22. digitsArr.forEach(element => {
      23. letters.push(arr1[element])
      24. });
      25. if(letters.length > 1) {
      26. return fn(letters);
      27. } else { //length=1 ['abc'] => ['a','b','c']
      28. if(letters[0]) {
      29. return letters[0].split('');
      30. } else {
      31. return []
      32. }
      33. }
      34. // console.log(digitsArr);
      35. // console.log(letters);
      36. };
      37. console.log(letterCombinations('234'))