實務上有時會想將 整數
的最後幾位去除,是否有更簡潔的作法呢 ?
Version
macOS Catalina 10.15.6
VS Code 1.47.2
Quokka 1.0.309
Ramda 0.27.0
substring()
let data = 1553
let f = n => v => {
let s = String(v)
return s.substring(0, s.length - n)
}
f(1)(data) // ?
f(2)(data) // ?
需求是整數 1553
,想要去除最後一位成 155
,去除最後兩位成 15
。
先將 Integer 轉型成 String,再使用 substring()
去除掉最後幾位數。
Bitwise Operator
let data = 1553
let f = n => v => v / (10 ** n) | 0
f(1)(data) // ?
f(2)(data) // ?
先使用 除法
取得整數部分,去除最後一位相當於 除以 10
,去除最後兩位相當於除以 100
,以此類推。
小數部分在與 | 0
去除,則只保留整數部分。
Conclusion
- 使用 bitwise operator,則都在 Number 處理,不用先轉成 String,因此一行即可解決
**
為 ES2016 新增的 operator,相當於Math.pow()
Reference
Bret Cameron, 12 JavaScript Tricks You Won’t Find in Most Tutorials