點燈坊

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

使用 assocPath() 對 Nested Array 新增修改 Element

Sam Xiao's Avatar 2021-04-23

assocPath() 除了能用在 Nested Object 外,也能用在 Nested Array。

Version

Ramda 0.27.1

Add Element

import { pipe, assocPath } from 'ramda'

let data = [0, [1, 2]]

pipe(
  assocPath([1, 2], 3)
)(data) // ?

若指定 index 不存在,assocPath() 將新增 element。

assocPath()
[Int] -> a -> [a] -> [a]
對 Array 新增或修改 element,並回傳全新 Array

[Int]:Nested Array 的 index 以 Array 傳入

a:element 的 value

[a]:data 為 Array

[a]:回傳新 Array

assocpath001

Modify Element

import { pipe, assocPath } from 'ramda';

let data = [0, [1, 2]]

pipe(
  assocPath([1, 1], 3)
)(data) // ?

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

assocpath000

Conclusion

  • 由於 ECMAScript 的 Object 與 Array 的曖昧關係,導致 assocPath() 也能用於 Array

Reference

Ramda, assocPath()