點燈坊

失くすものさえない今が強くなるチャンスよ

將整數的最後幾位去除

Sam Xiao's Avatar 2020-07-26

實務上有時會想將 整數 的最後幾位去除,是否有更簡潔的作法呢 ?

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() 去除掉最後幾位數。

substr000

Bitwise Operator

let data = 1553

let f = n => v => v / (10 ** n) | 0

f(1)(data) // ?
f(2)(data) // ?

先使用 除法 取得整數部分,去除最後一位相當於 除以 10,去除最後兩位相當於除以 100,以此類推。

小數部分在與 | 0 去除,則只保留整數部分。

substr001

Conclusion

  • 使用 bitwise operator,則都在 Number 處理,不用先轉成 String,因此一行即可解決
  • ** 為 ES2016 新增的 operator,相當於 Math.pow()

Reference

Bret Cameron, 12 JavaScript Tricks You Won’t Find in Most Tutorials