概述

逻辑函数


目录


and (函数)

and连接Predicate

签名


export const and = <A>(p1: Predicate<A>, p2: Predicate<A>): Predicate<A> => ...

示例

import { and } from 'macoolka-predicate'
interface A {
  name: string
  age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(and(isName, isAge)).length).toEqual(1)

v0.2.0 中添加

foldAND (函数)

fold Predicate 数组用and

签名


export const foldAND = <A>(p: Array<Predicate<A>>): Predicate<A> => ...

示例

import { foldAND } from 'macoolka-predicate'
interface A {
  name: string
  age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(foldAND([isName, isAge])).length).toEqual(1)

v0.2.0 中添加

foldOR (函数)

fold Predicate 数组用or

签名


export const foldOR = <A>(p: Array<Predicate<A>>): Predicate<A> => ...

示例

import { foldOR } from 'macoolka-predicate'
interface A {
  name: string
  age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(foldOR([isName, isAge])).length).toEqual(2)

v0.2.0 中添加

not (函数)

Predicate结果取反

示例

import { and } from 'macoolka-predicate'
interface A {
  name: string
  age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(and(isName, isAge)).length).toEqual(1)

v0.2.0 中添加

or (函数)

or连接Predicate

示例

import { or } from 'macoolka-predicate'
interface A {
  name: string
  age: number
}
const as: A[] = [{ name: 'a1', age: 20 }, { name: 'a2', age: 20 }, { name: 'a3', age: 28 }]
const isName = (a: A) => a.name === 'a1'
const isAge = (a: A) => a.age === 20
expect(as.filter(or(isName, isAge)).length).toEqual(2)

v0.2.0 中添加