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) }