點燈坊

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

使用 pickAll() 讓不存在的 Property 顯示 Undefined

Sam Xiao's Avatar 2019-08-02

除了 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,則會自動不顯示。

pickall000

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

pickall001

Conclusion

  • pick()pickAll() 的差異只在於若 object 沒有的 property 是否要顯示,pick() 會安靜地不顯示,而 pickAll() 則顯示 undefined

Reference

Ramda, pick()
Ramda, pickAll()