keepWhen
keepWhen
(predicate: Predicate) => (collection: Collection) => Collection
Keep entries that pass a condition
const gt2 = n => n > 2 const keepWhenGt2 = keepWhen(gt2) const result1 = keepWhenGt2([1, 2, 3, 4]) // is [3, 4] console.log(result1) const result2 = keepWhenGt2({ a: 1, b: 2, c: 3, d: 4 }) console.log(result2) // is { c: 3, d: 4 }
const gt2 = (n: number) => n > 2 const keepWhenGt2 = keepWhen(gt2) const result1 = keepWhenGt2([1, 2, 3, 4]) // is [3, 4] console.log(result1) const result2 = keepWhenGt2({ a: 1, b: 2, c: 3, d: 4 }) console.log(result2) // is { c: 3, d: 4 }
const gt2 = n => n > 2 const keepWhenGt2 = keepWhen(gt2) const result1 = keepWhenGt2([1, 2, 3, 4]) // is [3, 4] console.log(result1) const result2 = keepWhenGt2({ a: 1, b: 2, c: 3, d: 4, }) console.log(result2) // is { c: 3, d: 4 }
const gt2 = (n: number) => n > 2 const keepWhenGt2 = keepWhen(gt2) const result1 = keepWhenGt2([1, 2, 3, 4]) // is [3, 4] console.log(result1) const result2 = keepWhenGt2({ a: 1, b: 2, c: 3, d: 4, }) console.log(result2) // is { c: 3, d: 4 }
Sometimes we want to keep entries that pass a condition. Below, we have some 100-meter times. People who ran it in under 13 minutes qualify for the next round. Let's list the qualified runners.
const oneHundredMeterTimes = { mary: 12.8, sarah: 11.2, matt: 13.5, } const isSub13m = time => time < 13 const keepSub13Times = keepWhen(isSub13m) const getQualifiedRunners = compose([keepSub13Times, Object.keys]) const qualified = getQualifiedRunners(oneHundredMeterTimes) console.log(qualified) // is [ // mary // sarah // ]
type Times = Record<string, number> const oneHundredMeterTimes: Times = { mary: 12.8, sarah: 11.2, matt: 13.5, } const isSub13m = (time: number) => time < 13 const keepSub13Times = keepWhen(isSub13m)<Times> const getQualifiedRunners = compose([keepSub13Times, Object.keys]) const qualifiedRunners = getQualifiedRunners(oneHundredMeterTimes) console.log(qualifiedRunners) // is [ // mary // sarah // ]
const oneHundredMeterTimes = { mary: 12.8, sarah: 11.2, matt: 13.5, } const isSub13m = time => time < 13 const keepSub13Times = keepWhen(isSub13m) const getQualifiedRunners = compose([ keepSub13Times, Object.keys, ]) const qualified = getQualifiedRunners( oneHundredMeterTimes ) console.log(qualified) // is [ // mary // sarah // ]
type Times = Record<string, number> const oneHundredMeterTimes: Times = { mary: 12.8, sarah: 11.2, matt: 13.5, } const isSub13m = (time: number) => time < 13 const keepSub13Times = keepWhen(isSub13m)<Times> const getQualifiedRunners = compose([ keepSub13Times, Object.keys, ]) const qualifiedRunners = getQualifiedRunners( oneHundredMeterTimes ) console.log(qualifiedRunners) // is [ // mary // sarah // ]