1 var arr = [ 2 [], 3 [], 4 ['a', 'b', 'c'], 5 ['d', 'e', 'f'], 6 ['g', 'h', 'i'], 7 ['j', 'k', 'l'], 8 ['m', 'n', 'o'], 9 ['p', 'q', 'r', 's'], 10 ['t', 'u', 'v'], 11 ['w', 'x', 'y', 'z'] 12 ]; 13 14 var letterCombinations = function(digits) { 15 if (digits.length < 1) { 16 return []; 17 } 18 19 if (digits.length === 1) { 20 return arr[digits[0]]; 21 } 22 23 var ret = [], 24 listNow = arr[digits[0]], 25 listBehind = letterCombinations(digits.substring(1)), 26 lenBehind = listBehind.length; 27 28 for (var i = 0; i < listNow.length; i++) { 29 for (var j = 0; j < listBehind.length; j++) { 30 ret[i * lenBehind + j] = listNow[i] + listBehind[j]; 31 } 32 } 33 34 return ret; 35 };