Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ánh xạ số sang ký tự trong JavaScript

Giả sử chúng ta có số 12145. Chúng ta cần viết hàm ánh xạ các chữ số của số sang chữ cái tiếng Anh theo quy tắc: bảng chữ cái được ánh xạ theo chỉ số 1-based, như 'a' cho 1, 'b' cho 2, 'c' cho 3, v.v.

Có thể có nhiều cách ánh xạ một số. Hãy lấy số 121415 làm ví dụ:

Có thể ánh xạ như:

12145->1,2,1,4,5->a,b,a,d,e

Cũng có thể là:

12145->12,1,4,5->l,a,d,e

Hoặc:

12145->12,14,5->l,n,e

v.v., nhưng 12145 không thể là 1,2,1,45 vì không có ánh xạ cho 45 trong bảng chữ cái. Vì vậy, hàm nên trả về mảng tất cả các hoán vị của ánh xạ bảng chữ cái.

Mã cho việc này:

Ví dụ

const num = 12145; const mapToAlphabets = num => {    const numStr = '' + num;    let res = [];    const shoveElements = (left, right) => {       if (!left.length) {          res.push(right.map(el => {             return (+el + 9).toString(36);          }).join(''));          return;       };       if(+left[0] > 0){          shoveElements(left.slice(1), right.concat(left[0]));       };       if(left.length >= 2 && +(left.slice(0, 2)) <= 26){          shoveElements(left.slice(2), right.concat(left.slice(0, 2)));       };    };    shoveElements(numStr, []);    return res; } console.log(mapToAlphabets(num));

Đầu ra

Kết quả trên console:

[ 'abade', 'abne', 'aude', 'lade', 'lne' ]