點燈坊

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

使用 dissoc() 忽略 Object 單一 Property

Sam Xiao's Avatar 2020-03-03

若要忽略 Object 部分 Property,Ramda 提供了 omit();但若要忽略單一 Property,這就是 dissoc()

Version

Ramda 0.27.1

omit()

import { pipe, map, omit } from 'ramda'

let data = [
  { id: 1, title: 'FP in JavaScript', price: 100 },
  { id: 2, title: 'RxJS in Action', price: 200 },
  { id: 3, title: 'Speaking JavaScript', price: 300 }
]

pipe(
  map(omit(['id']))
)(data) // ?

若想忽略 id property 不顯示,可使用 omit(),唯 omit() 必須傳進 Array。

disssoc000

dissoc()

import { pipe, map, dissoc } from 'ramda'

let data = [
  { id: 1, title: 'FP in JavaScript', price: 100 },
  { id: 2, title: 'RxJS in Action', price: 200 },
  { id: 3, title: 'Speaking JavaScript', price: 300 }
]

pipe(
  map(dissoc('id'))
)(data) // ?

若只想忽略單一 property,可使用更精確的 dissoc(),只需提供 String 即可。

dissoc()
String -> {k: v} -> {k: v}
忽略 Object 單一 property 並回傳全新 Object

String:單一忽略 property

{k: v}:data 為 Object

{k: v}:回傳全新 Object

disssoc001

Conclusion

  • dissoc() 就功能上與 omit() 相同,唯 dissoc() 只能去除特定 property,而 omit() 可一次去除多個 property

Reference

Ramda, omit()
Ramda, dissoc()