若想對 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
Modify Property
import { assoc } from 'ramda'
let data = {
title: 'FP in JavaScript'
}
assoc('title', 'Speaking JavaScript', data) // ?
若 property 已存在,則相當於修改既有 property。
Conclusion
assoc()
一個 function 可同時支援新增 property 或修改 propertyassoc()
與set()
功能相同,唯set()
必須搭配 Lens