思路
1.首先将2-9对应的字符枚举出来
2.遍历所给digits参数,如果此时遍历的是参数中的第一个数组,比如’23’,正在遍历2对应的字母‘abc’,则将这三个字母赋值给数组中的三项[‘a’, ‘b’, ‘c’]
3.在遍历后续数字对应的字母时,让[‘a’, ‘b’, ‘c’]与正在遍历的字母相加,得到[‘ab’, ‘ae’, ‘af’, ‘bd’…]
// 枚举数字对应的字母
const emun = {
2: 'abc',
3: 'def',
4: 'ghi',
5: 'jkl',
6: 'mno',
7: 'pqrs',
8: 'tuv',
9: 'wxyz',
}
// 存储最终结果的数组
let arr = []
// 遍历参数
for(let i = 0; i < digits.length; i++) {
// 定义临时数组
let temArr = []
for(let j = 0; j < emun[digits[i]].length; j++) {
if(arr.length > 0) { // 如果arr数组不为空,则让被遍历的字母跟arr中的字母相加
for(let k = 0; k < arr.length; k++) {
temArr.push(arr[k] + emun[digits[i]][j])
}
}else { // 如果此时arr数组为空,直接向tempArr数组中添加字母
temArr.push(emun[digits[i]][j])
}
}
// 把tempArr的值赋值给arr数组
arr = temArr
}
return arr