點燈坊

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

使用 head() 取得 String 第一個 Char

Sam Xiao's Avatar 2020-02-01

ECMAScript 使用 [0] 取得 String 第一個 char,只可惜這是 Operator 而非 Function,因此無法使用 Function Composition,Ramda 另外提供了 head() 供 FP 使用。

Version

macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.274
Ramda 0.26.1

Imperative

let data = 'abc'

let head = str => str[0]

head(data) // ?

Imperative 會直接使用 [] 取得第一個 char。

head000

Functional

import { nth } from 'ramda'

let data = 'abc'

let head = nth(0)

head(data) // ?

Functional 可使用 nth() 以 point-free 取得第一個 char。

head001

Ramda

import { head } from 'ramda'

let data = 'abc'

head(data) // ?

Ramda 已經提供 head() 可直接使用。

head()
String -> String
取得 string 的第一個 char

head002

import { head } from 'ramda'

let data = ''

head(data) // ?

head() 若取不到資料,會回傳 empty string,而不是 undefined

head003

Conclusion

  • head() 若搭配 array,若找不到回傳 undefined;若搭配 string,找不到會回傳 empty string,這是兩者不同之處

Reference

Ramda, head()