點燈坊

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

使用 dissocPath() 忽略 Nested Object 的單一 Property

Sam Xiao's Avatar 2021-05-16

但若要忽略單一 Property 會使用 dissoc(),但若為單一 Nested Property 則要使用 dissocPath()

Version

Ramda 0.27.1

dissocPath()

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

let data = [
  {
    title: 'FP in JavaScript',
    price: {
      Amazon: 100,
      eBay: 200
    }
  },
  {
    title: 'Programming Haskell',
    price: {
      Amazon: 300,
      eBay: 400
    }
  },
  {
    title: 'Speaking JavaScript',
    price: {
      Amazon: 500,
      eBay: 600
    }
  }
]

pipe(
  map(dissocPath(['price', 'Amazon']))
)(data) // ?

27 行

pipe(
  map(dissocPath(['price', 'Amazon']))
)(data) // ?

data 為 Nested Object,不想顯示 price 下的 Amazon property。

dissocPath()
[String] → {k: v} → {k: v}
忽略 Nested Object 單一 property 並回傳全新 Object

[String]:單一忽略 propery,以 Array 提供

{k: v}:data 為 Object

{k: v}:回傳全新 Object

path000

Conclusion

  • dissoc() 就功能上與 dissocPath() 相同,唯 dissoc() 適用一般 Object,而 dissocPath() 適用於 Nested Object

Reference

Ramda, dissocPath()