點燈坊

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

使用 head() 取得 Array 的第一個 Element

Sam Xiao's Avatar 2020-02-01

ECMAScript 使用 [0] 取得 Array 第一個 element,只可惜這是 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 = [1, 2, 3]

let head = arr => arr[0]

head(data) // ?

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

head000

Functional

import { nth } from 'ramda'

let data = [1, 2, 3]

let head = nth(0)

head(data) // ?

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

head001

Ramda

import { head } from 'ramda'

let data = [1, 2, 3]

head(data) // ?

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

head()
[a] -> a | undefined
取得 array 的第一個 element

head002

import { head } from 'ramda'

let data = []

head(data) // ?

head() 若取不到資料,會回傳 undefined

head003

Conclusion

  • init()head() 有一點不同,若取不到資料,init() 會回傳 [] empty array,而 head() 會回傳 undefined,需小心處理

Reference

Ramda, head()