Vào một ngày không đẹp trời, nắng nóng gay gắt, thời tiết oi bức khó chịu. Tôi bâng quơ lướt Internet rồi đọc thấy 1 bài toán reverse number. Ừm, nếu chỉ là thế thì cũng chả có gì đặc biệt cứ Number %10 lưu rồi chia 10 với điều kiện >0 nói chung làm quá quen rồi Nhưng đợi 1 chút…. Trong javascript không định kiểu thì làm thế quái nào để dừng được điều kiện chạy vòng lặp reverse??? À có thể dùng hàm Number.isInterger() đã test thử nhưng fail ngay lập tức vì js không định kiểu nên Number/=10 ra float luôn 🙂 . Ok fine !
Tiếp theo, đành bất lực đi hỏi sư phụ google thì đã nhận được 1 kết quả phải há hốc mồm vì js thật là “thú vị ” :).
Vì cách reverse number của nó có thể nói là chả giống ai cả. Cụ thể như sau:
C1: Dùng hàm bình thường
function reversedNum(num) {
return (
parseInt(
num
.toString()
.split('')
.reverse()
.join('')
) * Math.sign(num)
)
}
C2; Dùng Arrow Function
const reversedNum = num => parseInt(num.toString().split('').reverse().join('')) * Math.sign(num)
2 cách trên mang kết quả như nhau nên có thể dùng cách nào cũng được.
Giải thích cách xử lí trên : vd: số ban đầu là -1234
+) toString() để chuyển số về dạng string để tiếp theo có thể dùng split() //”-1234″
+)split(‘ ‘) để chuyển string về array để tiếp theo ta có thể dùng reverse() //[ ‘-‘ , ‘1’ , ‘2’ ,’ 3′ , ‘4’ ]
+) reverse() dùng để đảo ngược các phần tử trong mảng //[ ‘4’ , ‘3’ , ‘2’ , ‘1’ , ‘-‘ ]
+)join(‘ ‘) dùng để chuyển các phần tử trong array đã đảo ngược ở trên thành string //”4321-“
+) parseInt() thực hiện sau dùng để chuyển string thành dạng số nguyên //4321
+)*Math.sign() dùng để giữ dấu của số ban đầu -/+ //-4321
Kết luận : JS thật sự rất “thú vị ” 🙂
Conal Dev
Reference source: https://www.freecodecamp.org/news/js-basics-how-to-reverse-a-number-9aefc20afa8d/