若只想取 Array 前幾筆資料,Ramda 提供了 take()
。
Version
Ramda 0.27.1
Imperative
let data = [1, 2, 3]
let take = n => a => {
let result = []
let i = 0
for (let x of a) {
if (i < n) {
result = [...result, x]
}
else
return result
i++
}
}
take(2)(data) // ?
建立 take()
,imperative 會使用 for
loop,並先建立好回傳的 result
Array,當 i
小於 n
時,x
會塞進回 result
,當大於等於 n
時,則回傳 result
結束執行。
Array.prototype.slice()
let data = [1, 2, 3]
let take = n => arr => arr.slice(0, n)
take(2)(data) // ?
Array.prototype
提供了 slice()
,也可取得前幾筆資料。
take()
import { slice } from 'ramda'
let data = [1, 2, 3]
let take = slice(0)
take(2)(data) // ?
Ramda 也提供了 slice()
,也可取得前幾筆資料。
Ramda
import { take } from 'ramda'
let data = [1, 2, 3]
take(2)(data) // ?
事實上 Ramda 已經內建 take()
可直接使用。
take()
Number -> [a] -> [a]
取得 Array 中的前 n 筆資料
Number
:前 n 筆
[a]
:data 為 Array
[a]
:回傳前 n 筆資料的新 Array
Object
import { take } from 'ramda'
let data = [
{ title: 'FP in JavaScript', price: 100 },
{ title: 'RxJS in Action', price: 200 },
{ title: 'Speaking JavaScript', price: 300 }
]
take(2)(data) // ?
take()
也可用在 object。
Conclusion
take()
也可使用slice()
實現take()
不只用在 Array,也可於用於 String