點燈坊

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

使用 assoc() 對 Object 新增修改 Property

Sam Xiao's Avatar 2021-04-22

若想對 Object 新增 Property 或修改 Property,Ramda 提供了 assoc()

Version

Ramda 0.27.1

Add Property

import { assoc } from 'ramda'

let data = {
  title: 'FP in JavaScript'
}

assoc('price', 100, data) // ?

若指定 property 不存在,assoc() 將新增 property。

assoc()
String -> a -> {k: v} -> {k: v}
對 Object 新增或修改 property,並回傳全新 Object

String : 新 property 的 key

a:新 property 的 value

{k: v}:data 為 Object

{k: v} :回傳新 Object

assoc000

Modify Property

import { assoc } from 'ramda'

let data = {
  title: 'FP in JavaScript'
}

assoc('title', 'Speaking JavaScript', data) // ?

若 property 已存在,則相當於修改既有 property。

assoc001

Conclusion

  • assoc() 一個 function 可同時支援新增 property 或修改 property
  • assoc()set() 功能相同,唯 set() 必須搭配 Lens

Reference

Ramda, assoc()