![](https://img2018.cnblogs.com/blog/1853166/202001/1853166-20200126115527094-488420466.png)![](https://img2018.cnblogs.com/blog/1853166/202001/185316... ...
export default (str) => {
// 建立電話號碼鍵盤映射
let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
// 把輸入字元串按單字元分隔變成數組,234=>[2,3,4]
let num = str.split('')
// 保存鍵盤映射後的字母內容,如 23=>['abc','def']
let code = []
num.forEach(item => {
if (map[item]) {
code.push(map[item])
}
})
let comb = (arr) => {
// 臨時變數用來保存前兩個組合的結果
let tmp = []
// 最外層的迴圈是遍歷第一個元素,裡層的迴圈是遍歷第二個元素
for (let i = 0, il = arr[0].length; i < il; i++) {
for (let j = 0, jl = arr[1].length; j < jl; j++) {
tmp.push(`${arr[0][i]}${arr[1][j]}`)
}
}
arr.splice(0, 2, tmp)
if (arr.length > 1) {
comb(arr)
} else {
return tmp
}
return arr[0]
}
return comb(code)
}