javascript
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function (digits) {
function _compose(str1, str2) {
let result = []
if (str1.length === 0) return str2
if (str2.length === 0) return str1
for (let i = 0; i < str1.length; i++) {
for (let j = 0; j < str2.length; j++) {
result.push(str1[i] + str2[j])
}
}
return result
}
const map = [, , 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
if (digits.length === 0) return []
if (digits.length === 1) return map[digits].split('')
return digits
.split('')
.map((d) => map[d])
.reduce(_compose, [])
}