除了 pick()
外,Ramda 另外提供了 pickAll()
,若該 property 並不存在於 object,則顯示 undefined
。
Version
macOS 10.14.5
VS Code 1.36.1
Quokka 1.0.238
Ramda 0.26.1
pick()
import { map, pick } from 'ramda';
let data = [
{ title: 'FP in JavaScript', price: 100 },
{ title: 'RxJS in Action', price: 200 },
{ title: 'Speaking JavaScript', price: 300 }
];
let usrFn = map(pick(['title', 'since']));
console.dir(usrFn(data));
pick()
可用來擷取 object 的部分 property,倘若 pick()
包含 object 所沒有的 property,則會自動不顯示。
pickAll()
import { map, pickAll } from 'ramda';
let data = [
{ title: 'FP in JavaScript', price: 100 },
{ title: 'RxJS in Action', price: 200 },
{ title: 'Speaking JavaScript', price: 300 }
];
let usrFn = map(pickAll(['title', 'since']));
console.dir(usrFn(data));
若 object 沒有的 property 也要顯示 undefined
,則要使用 pickAll()
。
pickAll()
[k] -> {k: v} -> {k: v}
與pick()
功能相同,唯若 property 不存在,則顯示undefined
[k]
:要抽取的 property
{k: v}
:data 為 object
{k: v}
: 回傳新的 object
Conclusion
pick()
與pickAll()
的差異只在於若 object 沒有的 property 是否要顯示,pick()
會安靜地不顯示,而pickAll()
則顯示undefined