01/10/2018, 00:28

Giúp giải thích cách sử dụng hàm trong đoạn code

cái này là decode ROT13 trong javascript

function rot13(str) {
  return str.replace(/[A-Za-z]/g, function (c) {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(
           "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm".indexOf(c)
    );
  } );
}
rot13("SERR CVMMN!");

mình không hiểu vì sao lại dùng dược charAt, indexOf trong trường hợp này

Tynk Huynk viết 02:39 ngày 01/10/2018

Đầu tiên giả sữ tham số c của bạn có giá trị là ‘A’ đi.

Ở cái chuỗi thứ 2 trong hàm function[quote=“hacker001, post:1, topic:36955”]
“NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm”
[/quote]

Nó sẽ đi tìm index của c trong chuỗi này, và phương thức index© sẽ trả về giá trị của index.
Lúc này [quote=“hacker001, post:1, topic:36955”]
“NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm”.indexOf© = 13
[/quote]

Nói cách khác index của c là 13

Tiếp theo là chuỗi thứ nhất [quote=“hacker001, post:1, topic:36955”]
“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”
[/quote]

Nó sẽ đì tìm kí tự xuất hiện ở index có giá trị 13 trong chuỗi này và phương thức charAt() sẽ trả về cho bạn kí tự đó

“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”.charAt(13)

Kí tự tìm được sẽ là ‘N’

Như vậy ta đã mã hóa từ ‘A’ sang ‘N’.

Mục đính 2 phương thức này giúp mã hóa kí tự trên cơ sở: lấy index của kí tự cần mã hóa trong 1 chuỗi rồi mã hóa kí tự này với 1 kí tự có cùng index ở chuỗi khác

Phước Võ Văn viết 02:28 ngày 01/10/2018

Nó sẽ đì tìm kí tự xuất hiện ở index có giá trị 13 trong chuỗi này và phương thức charAt() sẽ trả về cho bạn kí tự đó

cảm ơn bạn :)) giờ mới thông :))

Bài liên quan
0