當我們使用 Function 處理 Array 時,常常第一筆不是我們所要的,此時可用 tail()
剔除之。
Version
macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.276
Ramda 0.26.1
Imperative
let data = [1, 2, 3]
let tail = arr => {
let result = []
for(let i = 0; i < arr.length; i++)
if (i !== 0)
result.push(arr[i])
return result
}
tail(data) // ?
Imperative 會使用 for
loop,判斷當 index 不是第一個 element 時,將 element push 進 result
。
slice()
let data = [1, 2, 3]
let tail = arr => arr.slice(1)
tail(data) // ?
也可使用 Array.prototype
的 slice()
實現 tail()
。
import { slice } from 'ramda'
let data = [1, 2, 3]
let tail = slice(1)(Infinity)
tail(data) // ?
也可使用 Ramda 的 slice()
實現 init()
。
Ramda
import { tail } from 'ramda'
let data = [1, 2, 3]
tail(data) // ?
Ramda 已經提供 tail()
可直接使用。
tail()
[a] -> [a]
取得不包含第一筆的 array
[a]
:data 為 array
[a]
:回傳為 array
Application
import { split, pipe, tail } from 'ramda'
let data = '/usr/local/bin/node'
let fn = pipe(
split,
tail
)
fn('/', data) // ?
tail()
在實務上常與其他 function 組合使用,如 split()
將 string 轉成 array 時,因第一個 /
會多出一個 element,可使用 tail()
將其剔除。
Conclusion
tail()
與drop(1)
等效,可交替使用