點燈坊

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

使用 isOdd() 判斷是否為奇數

Sam Xiao's Avatar 2019-10-24

判斷基偶數也是常用功能,也能使用 Function Composition 實現。

Version

macOS Catalina 10.15
VS Code 1.39.2
Quokka 1.0.258
Ramda 0.26.1
Wink-fp 0.1.27

Ramda

import { filter } from 'ramda';

let data = [1, 2, 3];

filter(x => x % 2)(data); // ?

若想要找出 array 中所有的奇數 element,可使用 filter() 搭配判斷奇數的 predicate。

isodd000

Point-free

import { filter, compose, equals, flip, modulo } from 'ramda';

let data = [1, 2, 3];

let isOdd = compose(equals(1), flip(modulo)(2));

filter(isOdd)(data); // ?

若要使 filter() 的 predicate 也 point-free,可組合 modulo()equals()

isodd001

Wink-fp

import { filter } from 'ramda';
import { isOdd } from 'wink-fp';

let data = [1, 2, 3];

filter(isOdd)(data); // ?

Wink-fp 已經提供 isOdd(),可直接使用。

isOdd()
Number -> Boolean
判斷是否為奇數

Number:data 為 number

Boolean:回傳為 truefalse

isodd002

Conclusion

  • Wink-fp 亦提供 isEven() 判斷是否為偶數,原理與 isOdd() 相同

Reference

Ramda, filter()
Ramda, compose()
Ramda, modulo()
Ramda, flip()
Ramda, equals()