iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
Software Development

Should I use fp-ts系列 第 24

[Should I use fp-ts?] Day 24 - fp-ts Array

  • 分享至 

  • xImage
  •  

在本系列文中,所有的程式碼都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-24 並且有測試可以讓大家練習。

Array

Array ADT 還有很多有用的 function,今天介紹一些比較常用、容易使用的 function。

*WithIndex

*WithIndex 類型的 function 擁有和原 function 相同的功能,但可以多獲得 index 來進行額外的處理/限制,以下範例。

// filterWithIndex
pipe(
	xs, // [-3, 1, -2, 5];
    A.filterWithIndex((i, x) => x > 0 && i <= 2) // [1];
);

平常開法有時候會想要使用 map, filter, forEach 等等 function,但又需要 index 的屬性,在之前只能勉為其難使用 for 迴圈,現在可以使用 Array ADT*WithIndex 系列的函數來使程式碼更加簡便。

partition

partition 函式是將輸入的 array 依照條件進行分離,符合條件的為 right, 否則 left,以下範例。

// partition
pipe(
	xs, // ['a', 1, {}, 'b', 5];
	A.partition(isString) // { left: [1, {}, 5], right: ['a', 'b'] };
)

partition 的使用情境也是很常見的,有時候我們不僅想要使用 filter,也想要原陣列的另一部分,這時候就可以考慮使用 partition

今天的主題在 should-i-use-fp-tssrc/day-24 並且有測試可以讓大家練習。

Reference

Array.ts | fp-ts


上一篇
[Should I use fp-ts?] Day 23 - fp-ts Array
下一篇
[Should I use fp-ts?] Day 25 - fp-ts Array
系列文
Should I use fp-ts25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言