ECMAScript 使用 [string.length - 1]
取得 String 最後一個 Char,只可惜這是 Operator 而非 Function,因此無法使用 Function Composition,Ramda 另外提供了 last()
供 FP 使用。
Version
macOS Catalina 10.15.3
VS Code 1.42.1
Quokka 1.0.277
Ramda 0.27.0
Imperative
let data = 'abc'
let last = str => str[str.length - 1]
last(data) // ?
Imperative 會直接使用 []
取得最後一個 char。
ECMAScript
let data = 'abc'
let last = str => str.slice(-1)[0]
last(data) // ?
也可使用 slice(-1)
取得最後一個 char 開始的的 string,再用 [0]
取得。
Functional
import { nth } from 'ramda'
let data = 'abc'
let last = nth(-1)
last(data) // ?
Functional 可使用 nth()
以 point-free 取得最後一個 char。
Ramda
import { last } from 'ramda'
let data = 'abc'
last(data) // ?
Ramda 已經提供 last()
可直接使用。
last()
String -> String
取得 string 的最後一個 char
import { last } from 'ramda'
let data = ''
last(data) // ?
last()
若取不到資料,會回傳 empty string 而不是 undefined
。
Conclusion
- ECMAScript 必須使用
str[str.length -1]
才能取得最後一個 char,但 Ramda 只要nth(-1)
即可 - 若找不到資料,
last()
用在 array 會回傳undefined
;用在 string 只會回傳 empty string