函数式编程中,多个小函数要操作一个大的对象数据,分别对他做结构调整、数据过滤等操作,怎么避免对象复制

不希望引入immutable库等复制数据等库。又希望在项目中使用函数式编程,怎么解决拆分的小函数中依次复制的情况。

比如有个tableData对象,里面有很多数据,需要先修改它的结构,再过滤它的数据

filterTableData(tableData: object): object
formatTableData(tableData: object): object
....
const resolveTableData = compose(filterTableData, formatTableData, ...)

还有许多类似的操作,如果用函数式,为保证是纯函数,必须在filterTableData和formatTableData中先复制tableData,处理后再返回这个新对象,有办法避免这种过多的复制吗?

阅读 1.9k
2 个回答

实用 .map .filter 这种没有副作用的方法就可以不用手动复制了

我使用的是浅复制。如果层级很深,直接把参数克隆就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题